diff --git a/qad/CMakeLists.txt b/qad/CMakeLists.txt index 084f927..8ce1d17 100644 --- a/qad/CMakeLists.txt +++ b/qad/CMakeLists.txt @@ -51,7 +51,7 @@ if (NOT LIBPROJECT) endif() endif() -set(CMAKES "FindQAD.cmake" "QtWraps.cmake") +set(CMAKES "FindQAD.cmake" "QtWraps.cmake" "QADDeploy.cmake") if (LIB) install(FILES ${CMAKES} DESTINATION ${CMAKE_ROOT}/Modules) diff --git a/qad/QADDeploy.cmake b/qad/QADDeploy.cmake new file mode 100644 index 0000000..50f50a1 --- /dev/null +++ b/qad/QADDeploy.cmake @@ -0,0 +1,37 @@ + +# use "CMAKE_OTOOL" variable +# use "RELEASE_DIR" variable, where .app directory with installed binary +# can use "DEPLOY_ADD_LIBPATH" variable +macro(deploy_target _T full_app_name version icon label copyright info) + get_filename_component(_ICON_NAME "${icon}" NAME) + get_filename_component(_ICON_FN "${icon}" ABSOLUTE BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") + set(_TV "${_T}-${version}") + if (APPLE) + set(MACOSX_BUNDLE_GUI_IDENTIFIER "${full_app_name}") + set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${version}") + set(MACOSX_BUNDLE_LONG_VERSION_STRING "${version}") + set(MACOSX_BUNDLE_ICON_FILE "${_ICON_NAME}") + set(MACOSX_BUNDLE_BUNDLE_NAME "${label}") + set(MACOSX_BUNDLE_COPYRIGHT "${copyright}") + set(MACOSX_BUNDLE_INFO_STRING "${info}") + set(MACOSX_BUNDLE_BUNDLE_VERSION "6.0") + set_target_properties(${_T} PROPERTIES MACOSX_BUNDLE TRUE) + set(_AGD "${RELEASE_DIR}/${_T}.app") + set(_DMG "${CMAKE_CURRENT_BINARY_DIR}/dmg") + add_custom_target(generate_package + # gather .app dir + COMMAND mkdir -p ${_AGD}/Contents/Resources + COMMAND mkdir -p ${_AGD}/Contents/Frameworks + COMMAND cp ${_ICON_FN} ${_AGD}/Contents/Resources + COMMAND deploy_tool -M "${CMAKE_OTOOL}" -P cocoa -S mac -q ${Qt5_ROOT} -s \"${CMAKE_PREFIX_PATH}/lib\;${DEPLOY_ADD_LIBPATH}\" -o ${_AGD}/Contents/Frameworks -p ${_AGD}/Contents/PlugIns ${_AGD}/Contents/MacOS/${_T} + # prepare dmg dir + COMMAND rm -rf ${_DMG} + COMMAND mkdir -p ${_DMG} + COMMAND cp -r ${_AGD} ${_DMG} + COMMAND ln --symbolic /Applications ${_DMG} + # generate dmg + COMMAND genisoimage -quiet -V ${_T} -D -R -apple -no-pad -o ${RELEASE_DIR}/${_TV}.dmg ${_DMG} + COMMENT "Generating ${_TV}.dmg" + ) + endif() +endmacro()