# 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()