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> ...] ]
[PLUGINS <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"
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()