This commit is contained in:
2020-04-29 12:58:16 +03:00
parent ba991ed802
commit 6a6907b136

View File

@@ -73,11 +73,12 @@ deploy_target(<target> [DEPLOY_DIR <dir>] [DESTINATION <dir>]
[RESOURCES <dir|file> [<dir|file> ...] ] [RESOURCES <dir|file> [<dir|file> ...] ]
[PLUGINS <dir|file> [<dir|file> ...] ] [PLUGINS <dir|file> [<dir|file> ...] ]
[FILES <dir|file> [<dir|file> ...] ] [FILES <dir|file> [<dir|file> ...] ]
[OPTIONS <flag> ...] [VERBOSE]) [OPTIONS <flag> ...] [VERBOSE] [ZIP_DMG])
Create make target "deploy_<target>", depends on target "deploy" Create make target "deploy_<target>", depends on target "deploy"
On this target create release package, containing all dependencies: 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 You should set version and deploy properties
before call this macro, see before call this macro, see
@@ -94,11 +95,11 @@ DEPLOY_DIR - dir where you install
DESTINATION - dir where macro place package DESTINATION - dir where macro place package
RESOURCES, PLUGINS and FILES - list of directories and files, copied to: RESOURCES, PLUGINS and FILES - list of directories and files, copied to:
| Windows | Linux | MacOS | | Windows | Linux | MacOS |
----------|---------|---------------------------|------------------- | ----------|---------|---------------------------|--------------------|
RESOURCES | root | /usr/share/COMPANY/target | Contents/Resources | RESOURCES | root | /usr/share/COMPANY/target | Contents/Resources |
PLUGINS | root | /usr/lib/COMPANY/target | Contents/PlugIns | PLUGINS | root | /usr/lib/COMPANY/target | Contents/PlugIns |
FILES | root | /usr/bin | Contents/MacOS | FILES | root | /usr/bin | Contents/MacOS |
Relative paths are taken from DEPLOY_DIR Relative paths are taken from DEPLOY_DIR
Also check library dependencies from PLUGINS and FILES Also check library dependencies from PLUGINS and FILES
@@ -547,14 +548,17 @@ macro(deploy_target _T)
set(_VERB) set(_VERB)
set(_WVERB 1> NUL) set(_WVERB 1> NUL)
set(_OPTIONS) set(_OPTIONS)
set(_ZIP_DMG 0)
set(_cur_arg) 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}) foreach(_i ${ARGN})
if (_i IN_LIST __args) if (_i IN_LIST __args)
set(_cur_arg "${_i}") set(_cur_arg "${_i}")
if ("${_cur_arg}" STREQUAL "VERBOSE") if ("${_cur_arg}" STREQUAL "VERBOSE")
set(_VERB -v) set(_VERB -v)
set(_WVERB) set(_WVERB)
elseif("${_cur_arg}" STREQUAL "ZIP_DMG")
set(_ZIP_DMG 1)
endif() endif()
elseif ("${_cur_arg}" STREQUAL "DESTINATION") elseif ("${_cur_arg}" STREQUAL "DESTINATION")
set(_cur_arg) set(_cur_arg)
@@ -627,6 +631,7 @@ macro(deploy_target _T)
if (_ICON_NAME) if (_ICON_NAME)
set(_CMD_ ${_CMD_} COMMAND cp ${_VERB} -f ${_ICON_FN} ${_AGD}/usr/share/pixmaps) set(_CMD_ ${_CMD_} COMMAND cp ${_VERB} -f ${_ICON_FN} ${_AGD}/usr/share/pixmaps)
endif() endif()
set(_deb_name "${_TV}_debian_${_DEB_ARCH}.deb")
add_custom_target(deploy_${_T} add_custom_target(deploy_${_T}
# gather deb dir # gather deb dir
COMMAND mkdir ${_VERB} -p ${_AGD}/DEBIAN COMMAND mkdir ${_VERB} -p ${_AGD}/DEBIAN
@@ -665,9 +670,9 @@ macro(deploy_target _T)
# generate deb # generate deb
COMMAND cd ${_AGD} "&&" md5deep -rl usr ">" DEBIAN/md5sums COMMAND cd ${_AGD} "&&" md5deep -rl usr ">" DEBIAN/md5sums
COMMAND mkdir ${_VERB} -p ${_DESTINATION} COMMAND mkdir ${_VERB} -p ${_DESTINATION}
COMMAND dpkg-deb -b ${_AGD} ${_DESTINATION}/${_TV}_${_DEB_ARCH}.deb COMMAND dpkg-deb -b ${_AGD} ${_DESTINATION}/${_deb_name}
VERBATIM VERBATIM
COMMENT "Generating ${_TV}_${_DEB_ARCH}.deb" COMMENT "Generating ${_deb_name}"
) )
set(_has_deploy 1) set(_has_deploy 1)
elseif(WIN32) elseif(WIN32)
@@ -686,14 +691,15 @@ macro(deploy_target _T)
__make_copy(_CMD_ _RES_DIRS _RES_FILES "${_AGD}") __make_copy(_CMD_ _RES_DIRS _RES_FILES "${_AGD}")
__make_copy(_CMD_ _PLUG_DIRS _PLUG_FILES "${_AGD}") __make_copy(_CMD_ _PLUG_DIRS _PLUG_FILES "${_AGD}")
__make_copy(_CMD_ _FILE_DIRS _FILE_FILES "${_AGD}") __make_copy(_CMD_ _FILE_DIRS _FILE_FILES "${_AGD}")
set(_zip_name "${_TV}_windows_x64.zip")
add_custom_target(deploy_${_T} add_custom_target(deploy_${_T}
# gather dir # gather dir
${_CMD_} ${_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} 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 # zip
COMMAND cd "\"${_DEPLOY_DIR}\"" "&&" zip -q -r "\"${_DESTINATION}/${_TV}.zip\"" "\"${_TV}_win_${MY_ARCH}\"" COMMAND cd "\"${_DEPLOY_DIR}\"" "&&" zip -q -r "\"${_DESTINATION}/${_zip_name}\"" "\"${_TV}_win_${MY_ARCH}\""
COMMENT "Generating ${_TV}.zip" COMMENT "Generating ${_zip_name}"
) )
set(_has_deploy 1) set(_has_deploy 1)
elseif (APPLE) elseif (APPLE)
@@ -723,15 +729,24 @@ macro(deploy_target _T)
if (NOT CMAKE_PREFIX_PATH) if (NOT CMAKE_PREFIX_PATH)
set(CMAKE_PREFIX_PATH "/usr/local") set(CMAKE_PREFIX_PATH "/usr/local")
endif() 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) #set(_cmd_int)
if (__mac_host) 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") #set(_rpathes "@executable_path/../Frameworks" "@executable_path/lib" "@loader_path/../lib")
#foreach (_r ${_rpathes}) #foreach (_r ${_rpathes})
# set(_cmd_int ${_cmd_int} COMMAND install_name_tool -add_rpath "${_r}" \"${_AGD}/Contents/MacOS/${_T}\") # set(_cmd_int ${_cmd_int} COMMAND install_name_tool -add_rpath "${_r}" \"${_AGD}/Contents/MacOS/${_T}\")
#endforeach() #endforeach()
endif() 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} add_custom_target(deploy_${_T}
# gather .app dir # gather .app dir
COMMAND mkdir ${_VERB} -p ${_AGD}/Contents/Resources COMMAND mkdir ${_VERB} -p ${_AGD}/Contents/Resources
@@ -749,7 +764,7 @@ macro(deploy_target _T)
COMMAND ln ${_VERB} -s /Applications ${_DMG} COMMAND ln ${_VERB} -s /Applications ${_DMG}
# generate dmg # generate dmg
${_cmd_gen_dmg} ${_cmd_gen_dmg}
COMMENT "Generating ${_TV}.dmg" COMMENT "${_comment}"
) )
set(_has_deploy 1) set(_has_deploy 1)
elseif (DEFINED ANDROID_PLATFORM) 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 "${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}\"" assembleDebug)
set(_CMD_ ${_CMD_} COMMAND "${_AGD}/gradlew" ${_gradle_home} --no-daemon -p "\"${_AGD}\"" bundleRelease) set(_CMD_ ${_CMD_} COMMAND "${_AGD}/gradlew" ${_gradle_home} --no-daemon -p "\"${_AGD}\"" bundleRelease)
set(_dir) set(_base_name "${_TV}_android_all")
set(_file "${_AGD}/build/outputs/apk/debug/${_T}.android-debug.apk") 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) 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() endif()
__make_copy(_CMD_ _dir _file "${_DESTINATION}")
add_custom_target(deploy_${_T} add_custom_target(deploy_${_T}
# gather .app dir # gather .app dir
${_CMD_} ${_CMD_}
COMMENT "Generating ${_TV}.apk/aab" COMMENT "Generating ${_base_name}.apk/aab"
) )
set(_has_deploy 1) set(_has_deploy 1)
endif() endif()