diff --git a/cmake/DeployMacros.cmake b/cmake/DeployMacros.cmake index 6489dc43..c391289b 100644 --- a/cmake/DeployMacros.cmake +++ b/cmake/DeployMacros.cmake @@ -73,11 +73,12 @@ deploy_target( [DEPLOY_DIR ] [DESTINATION ] [RESOURCES [ ...] ] [PLUGINS [ ...] ] [FILES [ ...] ] - [OPTIONS ...] [VERBOSE]) + [OPTIONS ...] [VERBOSE] [ZIP_DMG]) Create make target "deploy_", depends on target "deploy" On this target create release package, containing all dependencies: -*.zip on Windows, *.deb on Linux and *.dmg an MacOS +*.zip on Windows, *.deb on Linux, *.dmg an MacOS, *.apk and *.aab on Android +If defined ZIP_DMG then *.dmg.zip will be created on MacOS You should set version and deploy properties before call this macro, see @@ -94,11 +95,11 @@ DEPLOY_DIR - dir where you install DESTINATION - dir where macro place package RESOURCES, PLUGINS and FILES - list of directories and files, copied to: - | Windows | Linux | MacOS -----------|---------|---------------------------|------------------- -RESOURCES | root | /usr/share/COMPANY/target | Contents/Resources -PLUGINS | root | /usr/lib/COMPANY/target | Contents/PlugIns -FILES | root | /usr/bin | Contents/MacOS +| | Windows | Linux | MacOS | +| ----------|---------|---------------------------|--------------------| +| RESOURCES | root | /usr/share/COMPANY/target | Contents/Resources | +| PLUGINS | root | /usr/lib/COMPANY/target | Contents/PlugIns | +| FILES | root | /usr/bin | Contents/MacOS | Relative paths are taken from DEPLOY_DIR Also check library dependencies from PLUGINS and FILES @@ -547,14 +548,17 @@ macro(deploy_target _T) set(_VERB) set(_WVERB 1> NUL) set(_OPTIONS) + set(_ZIP_DMG 0) set(_cur_arg) - set(__args "DESTINATION;DEPLOY_DIR;RESOURCES;PLUGINS;FILES;OPTIONS;VERBOSE") + set(__args "DESTINATION;DEPLOY_DIR;RESOURCES;PLUGINS;FILES;OPTIONS;VERBOSE;ZIP_DMG") foreach(_i ${ARGN}) if (_i IN_LIST __args) set(_cur_arg "${_i}") if ("${_cur_arg}" STREQUAL "VERBOSE") set(_VERB -v) set(_WVERB) + elseif("${_cur_arg}" STREQUAL "ZIP_DMG") + set(_ZIP_DMG 1) endif() elseif ("${_cur_arg}" STREQUAL "DESTINATION") set(_cur_arg) @@ -627,6 +631,7 @@ macro(deploy_target _T) if (_ICON_NAME) set(_CMD_ ${_CMD_} COMMAND cp ${_VERB} -f ${_ICON_FN} ${_AGD}/usr/share/pixmaps) endif() + set(_deb_name "${_TV}_debian_${_DEB_ARCH}.deb") add_custom_target(deploy_${_T} # gather deb dir COMMAND mkdir ${_VERB} -p ${_AGD}/DEBIAN @@ -665,9 +670,9 @@ macro(deploy_target _T) # generate deb COMMAND cd ${_AGD} "&&" md5deep -rl usr ">" DEBIAN/md5sums COMMAND mkdir ${_VERB} -p ${_DESTINATION} - COMMAND dpkg-deb -b ${_AGD} ${_DESTINATION}/${_TV}_${_DEB_ARCH}.deb + COMMAND dpkg-deb -b ${_AGD} ${_DESTINATION}/${_deb_name} VERBATIM - COMMENT "Generating ${_TV}_${_DEB_ARCH}.deb" + COMMENT "Generating ${_deb_name}" ) set(_has_deploy 1) elseif(WIN32) @@ -686,14 +691,15 @@ macro(deploy_target _T) __make_copy(_CMD_ _RES_DIRS _RES_FILES "${_AGD}") __make_copy(_CMD_ _PLUG_DIRS _PLUG_FILES "${_AGD}") __make_copy(_CMD_ _FILE_DIRS _FILE_FILES "${_AGD}") + set(_zip_name "${_TV}_windows_x64.zip") add_custom_target(deploy_${_T} # gather dir ${_CMD_} COMMAND deploy_tool ${_VERB} ${_OPTIONS} -W "\"${CMAKE_OBJDUMP}\"" -P windows,minimal -S windows -q "\"${Qt5_ROOT}\"" -s "\"${CMAKE_PREFIX_PATH}/bin${_dt_delim}${MINGW_BIN}${_add_search_path}\"" -o ${_AGD} -p ${_AGD} "\"${_AGD}${_T}.exe\"" ${_ADD_DEPS} # zip - COMMAND cd "\"${_DEPLOY_DIR}\"" "&&" zip -q -r "\"${_DESTINATION}/${_TV}.zip\"" "\"${_TV}_win_${MY_ARCH}\"" - COMMENT "Generating ${_TV}.zip" + COMMAND cd "\"${_DEPLOY_DIR}\"" "&&" zip -q -r "\"${_DESTINATION}/${_zip_name}\"" "\"${_TV}_win_${MY_ARCH}\"" + COMMENT "Generating ${_zip_name}" ) set(_has_deploy 1) elseif (APPLE) @@ -723,15 +729,24 @@ macro(deploy_target _T) if (NOT CMAKE_PREFIX_PATH) set(CMAKE_PREFIX_PATH "/usr/local") endif() - set(_cmd_gen_dmg COMMAND genisoimage -quiet -V "${MACOSX_BUNDLE_BUNDLE_NAME}" -D -R -apple -no-pad -o ${_DESTINATION}/${_TV}.dmg ${_DMG}) + set(_dmg_name "${_TV}_macosx_x64.dmg") + set(_cmd_gen_dmg COMMAND genisoimage -quiet -V "${MACOSX_BUNDLE_BUNDLE_NAME}" -D -R -apple -no-pad -o ${_DESTINATION}/${_dmg_name} ${_DMG}) #set(_cmd_int) if (__mac_host) - set(_cmd_gen_dmg COMMAND hdiutil create ${_DESTINATION}/${_TV}.dmg -ov -volname "${MACOSX_BUNDLE_BUNDLE_NAME}" -fs HFS+ -srcfolder ${_DMG}) + set(_cmd_gen_dmg COMMAND hdiutil create ${_DESTINATION}/${_dmg_name} -ov -volname "${MACOSX_BUNDLE_BUNDLE_NAME}" -fs HFS+ -srcfolder ${_DMG}) #set(_rpathes "@executable_path/../Frameworks" "@executable_path/lib" "@loader_path/../lib") #foreach (_r ${_rpathes}) # set(_cmd_int ${_cmd_int} COMMAND install_name_tool -add_rpath "${_r}" \"${_AGD}/Contents/MacOS/${_T}\") #endforeach() endif() + if (_ZIP_DMG) + set(_cmd_gen_dmg ${_cmd_gen_dmg} COMMAND zip -q -r "\"${_DESTINATION}/${_dmg_name}.zip\"" "\"${_DESTINATION}/${_dmg_name}\"") + set(_cmd_gen_dmg ${_cmd_gen_dmg} COMMAND rm "\"${_DESTINATION}/${_dmg_name}\"") + endif() + set(_comment "Generating ${_dmg_name}") + if (_ZIP_DMG) + set(_comment "${_comment}.zip") + endif() add_custom_target(deploy_${_T} # gather .app dir COMMAND mkdir ${_VERB} -p ${_AGD}/Contents/Resources @@ -749,7 +764,7 @@ macro(deploy_target _T) COMMAND ln ${_VERB} -s /Applications ${_DMG} # generate dmg ${_cmd_gen_dmg} - COMMENT "Generating ${_TV}.dmg" + COMMENT "${_comment}" ) set(_has_deploy 1) elseif (DEFINED ANDROID_PLATFORM) @@ -869,16 +884,15 @@ macro(deploy_target _T) set(_CMD_ ${_CMD_} COMMAND "${Qt5_BIN}/androiddeployqt" --aux-mode --android-platform ${ANDROID_PLATFORM} --output "\"${_AGD}\"" --input "\"${_out_json}\"") set(_CMD_ ${_CMD_} COMMAND "${_AGD}/gradlew" ${_gradle_home} --no-daemon -p "\"${_AGD}\"" assembleDebug) set(_CMD_ ${_CMD_} COMMAND "${_AGD}/gradlew" ${_gradle_home} --no-daemon -p "\"${_AGD}\"" bundleRelease) - set(_dir) - set(_file "${_AGD}/build/outputs/apk/debug/${_T}.android-debug.apk") + set(_base_name "${_TV}_android_all") + set(_CMD_ ${_CMD_} COMMAND "${CMAKE_COMMAND}" -E copy "${_AGD}/build/outputs/apk/debug/${_T}.android-debug.apk" "${_DESTINATION}/${_base_name}.apk") if (ANDROID_STORE_FILE) - list(APPEND _file "${_AGD}/build/outputs/bundle/release/${_T}.android-release.aab") + set(_CMD_ ${_CMD_} COMMAND "${CMAKE_COMMAND}" -E copy "${_AGD}/build/outputs/bundle/release/${_T}.android-release.aab" "${_DESTINATION}/${_base_name}.aab") endif() - __make_copy(_CMD_ _dir _file "${_DESTINATION}") add_custom_target(deploy_${_T} # gather .app dir ${_CMD_} - COMMENT "Generating ${_TV}.apk/aab" + COMMENT "Generating ${_base_name}.apk/aab" ) set(_has_deploy 1) endif()