deploy features
This commit is contained in:
@@ -130,7 +130,7 @@ else()
|
||||
set(CMAKE_INSTALL_RPATH "@executable_path/../Frameworks;@executable_path/lib;@loader_path/../lib")
|
||||
set(CMAKE_MACOSX_RPATH 1)
|
||||
else()
|
||||
set(CMAKE_INSTALL_RPATH "\$ORIGIN/lib")
|
||||
set(CMAKE_INSTALL_RPATH "\$ORIGIN;\$ORIGIN/lib")
|
||||
endif()
|
||||
endif()
|
||||
if(LIB)
|
||||
|
||||
@@ -73,16 +73,16 @@ 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] [ZIP_DMG])
|
||||
[OPTIONS <flag> ...] [VERBOSE] [ZIP_NO_DMG] [DEB_USR_DIR])
|
||||
|
||||
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:
|
||||
*.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
|
||||
*.zip on Windows, *.deb on Linux, *.dmg an MacOS, *.apk and *.aab on Android.
|
||||
If not defined ZIP_NO_DMG then *.dmg.zip will be created on MacOS.
|
||||
|
||||
You should set version and deploy properties
|
||||
before call this macro, see
|
||||
"set_version()" and "set_deploy_property()"
|
||||
"set_version()" and "set_deploy_property()".
|
||||
|
||||
Example:
|
||||
deploy_target(my_app DESTINATION packages)
|
||||
@@ -95,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 | Linux (DEB_USR_DIR) | MacOS |
|
||||
|-----------|---------|---------------------|---------------------------|--------------------|
|
||||
| RESOURCES | root | /opt/COMPANY/target | /usr/share/COMPANY/target | Contents/Resources |
|
||||
| PLUGINS | root | /opt/COMPANY/target | /usr/lib/COMPANY/target | Contents/PlugIns |
|
||||
| FILES | root | /opt/COMPANY/target | /usr/bin | Contents/MacOS |
|
||||
|
||||
Relative paths are taken from DEPLOY_DIR
|
||||
Also check library dependencies from PLUGINS and FILES
|
||||
@@ -548,17 +548,20 @@ macro(deploy_target _T)
|
||||
set(_VERB)
|
||||
set(_WVERB 1> NUL)
|
||||
set(_OPTIONS)
|
||||
set(_ZIP_DMG 0)
|
||||
set(_ZIP_DMG 1)
|
||||
set(_DEB_OPT 1)
|
||||
set(_cur_arg)
|
||||
set(__args "DESTINATION;DEPLOY_DIR;RESOURCES;PLUGINS;FILES;OPTIONS;VERBOSE;ZIP_DMG")
|
||||
set(__args "DESTINATION;DEPLOY_DIR;RESOURCES;PLUGINS;FILES;OPTIONS;VERBOSE;ZIP_NO_DMG;DEB_USR_DIR")
|
||||
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)
|
||||
elseif("${_cur_arg}" STREQUAL "ZIP_NO_DMG")
|
||||
set(_ZIP_DMG 0)
|
||||
elseif("${_cur_arg}" STREQUAL "DEB_USR_DIR")
|
||||
set(_DEB_OPT 0)
|
||||
endif()
|
||||
elseif ("${_cur_arg}" STREQUAL "DESTINATION")
|
||||
set(_cur_arg)
|
||||
@@ -595,9 +598,6 @@ macro(deploy_target _T)
|
||||
set(_CMD_)
|
||||
set(_has_deploy 0)
|
||||
if ("x${CMAKE_SYSTEM_NAME}" STREQUAL "xLinux")
|
||||
if (NOT CMAKE_LDD)
|
||||
find_program(CMAKE_LDD ldd)
|
||||
endif()
|
||||
string(REPLACE "_" "-" _DEBNAME "${_T}")
|
||||
string(REPLACE "_" "-" _DEBVERSION "${${_T}_VERSION}")
|
||||
set(_DEB_ARCH)
|
||||
@@ -622,14 +622,44 @@ macro(deploy_target _T)
|
||||
set(_C_echo ">>" "${_AGD}/DEBIAN/control")
|
||||
set(_D_echof ">" "${_AGD}/usr/share/applications/${_DEBNAME}.desktop")
|
||||
set(_D_echo ">>" "${_AGD}/usr/share/applications/${_DEBNAME}.desktop")
|
||||
__make_copy(_CMD_ _RES_DIRS _RES_FILES "${_AGD}/usr/share/${${_T}_COMPANY}/${_T}")
|
||||
__make_copy(_CMD_ _PLUG_DIRS _PLUG_FILES "${_AGD}/usr/lib/${${_T}_COMPANY}/${_T}")
|
||||
__make_copy(_CMD_ _FILE_DIRS _FILE_FILES "${_AGD}/usr/bin")
|
||||
set(_bin_path "${_AGD}/usr/bin")
|
||||
set(_lib_path "${_AGD}/usr/lib")
|
||||
set(_pli_path "${_AGD}/usr/lib/${${_T}_COMPANY}/${_T}")
|
||||
set(_res_path "${_AGD}/usr/share/${${_T}_COMPANY}/${_T}")
|
||||
set(_ico_path "${_AGD}/usr/share/pixmaps")
|
||||
set(_app_bin_path "/usr/bin")
|
||||
set(_app_ico_path "/usr/share/pixmaps")
|
||||
if(_DEB_OPT)
|
||||
set(_bin_path "${_AGD}/opt/${${_T}_COMPANY}/${_T}")
|
||||
set(_lib_path "${_AGD}/opt/${${_T}_COMPANY}/${_T}/lib")
|
||||
set(_pli_path "${_AGD}/opt/${${_T}_COMPANY}/${_T}")
|
||||
set(_res_path "${_AGD}/opt/${${_T}_COMPANY}/${_T}")
|
||||
set(_ico_path "${_AGD}/opt/${${_T}_COMPANY}/${_T}/pixmaps")
|
||||
set(_app_bin_path "/opt/${${_T}_COMPANY}/${_T}")
|
||||
set(_app_ico_path "/opt/${${_T}_COMPANY}/${_T}/pixmaps")
|
||||
endif()
|
||||
set(_CMD_ ${_CMD_} COMMAND mkdir ${_VERB} -p "${_bin_path}")
|
||||
set(_CMD_ ${_CMD_} COMMAND mkdir ${_VERB} -p "${_lib_path}")
|
||||
set(_CMD_ ${_CMD_} COMMAND mkdir ${_VERB} -p "${_pli_path}")
|
||||
set(_CMD_ ${_CMD_} COMMAND mkdir ${_VERB} -p "${_res_path}")
|
||||
set(_CMD_ ${_CMD_} COMMAND mkdir ${_VERB} -p "${_ico_path}")
|
||||
set(_CMD_ ${_CMD_} COMMAND mkdir ${_VERB} -p "${_AGD}/usr/share/applications")
|
||||
__make_copy(_CMD_ _FILE_DIRS _FILE_FILES ${_bin_path})
|
||||
__make_copy(_CMD_ _PLUG_DIRS _PLUG_FILES ${_pli_path})
|
||||
__make_copy(_CMD_ _RES_DIRS _RES_FILES ${_res_path})
|
||||
set(_CMD_ ${_CMD_} COMMAND cp ${_VERB} -f "${_DEPLOY_DIR}/${_T}" "${_bin_path}/")
|
||||
if (_DEP_LIBS)
|
||||
set(_CMD_ ${_CMD_} COMMAND cp ${_VERB} -f ${_DEP_LIBS} ${_AGD}/usr/lib)
|
||||
set(_CMD_ ${_CMD_} COMMAND cp ${_VERB} -f "${_DEP_LIBS}" "${_lib_path}/")
|
||||
endif()
|
||||
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}" "${_ico_path}/")
|
||||
endif()
|
||||
if(_DEB_OPT)
|
||||
set(_CMD_ ${_CMD_} COMMAND mkdir ${_VERB} -p "${_AGD}/usr/bin")
|
||||
set(_CMD_ ${_CMD_} COMMAND ln -srf ${_VERB} "${_bin_path}/${_T}" "${_AGD}/usr/bin/${_T}")
|
||||
endif()
|
||||
if (NOT CMAKE_LDD)
|
||||
find_program(CMAKE_LDD ldd)
|
||||
endif()
|
||||
set(_dt_opts -l "${CMAKE_LDD}")
|
||||
if (CMAKE_CROSSCOMPILING)
|
||||
@@ -643,19 +673,15 @@ macro(deploy_target _T)
|
||||
set(_deb_name "${_TV}_debian_${_DEB_ARCH}.deb")
|
||||
add_custom_target(deploy_${_T}
|
||||
# gather deb dir
|
||||
COMMAND mkdir ${_VERB} -p ${_AGD}/DEBIAN
|
||||
COMMAND mkdir ${_VERB} -p ${_AGD}/usr/bin
|
||||
COMMAND mkdir ${_VERB} -p ${_AGD}/usr/lib
|
||||
COMMAND mkdir ${_VERB} -p ${_AGD}/usr/share/pixmaps
|
||||
COMMAND mkdir ${_VERB} -p ${_AGD}/usr/share/applications
|
||||
COMMAND cp ${_VERB} -f ${_DEPLOY_DIR}/${_T} ${_AGD}/usr/bin
|
||||
COMMAND rm -rf ${_VERB} "${_AGD}"
|
||||
COMMAND mkdir ${_VERB} -p "${_AGD}/DEBIAN"
|
||||
${_CMD_}
|
||||
|
||||
COMMAND echo "Package: ${_DEBNAME}" ${_C_echof}
|
||||
COMMAND echo "Version: ${_DEBVERSION}" ${_C_echo}
|
||||
COMMAND echo "Architecture: ${_DEB_ARCH}" ${_C_echo}
|
||||
COMMAND echo "Maintainer: ${${_T}_COMPANY} <>" ${_C_echo}
|
||||
COMMAND ${PIP_DEPLOY_TOOL} ${_OPTIONS} --prefix "Depends: " --dependencies ${_dt_opts} -a "${_DEP_LIBS_CS}" -o "${_AGD}/usr/lib" ${_DEPLOY_DIR}/${_T} ${_ADD_DEPS} ${_C_echo}
|
||||
COMMAND ${PIP_DEPLOY_TOOL} ${_OPTIONS} --prefix "Depends: " --dependencies ${_dt_opts} -a "${_DEP_LIBS_CS}" -o "${_lib_path}" ${_DEPLOY_DIR}/${_T} ${_ADD_DEPS} ${_C_echo}
|
||||
COMMAND echo "Conflicts:" ${_C_echo}
|
||||
COMMAND echo "Replaces:" ${_C_echo}
|
||||
COMMAND echo "Section: misc" ${_C_echo}
|
||||
@@ -668,8 +694,8 @@ macro(deploy_target _T)
|
||||
COMMAND echo "Name=${${_T}_LABEL}" ${_D_echo}
|
||||
COMMAND echo "GenericName=${${_T}_LABEL}" ${_D_echo}
|
||||
COMMAND echo "Comment=${${_T}_INFO}" ${_D_echo}
|
||||
COMMAND echo "Exec=/usr/bin/${_T}" ${_D_echo}
|
||||
COMMAND echo "Icon=/usr/share/pixmaps/${_ICON_NAME}" ${_D_echo}
|
||||
COMMAND echo "Exec=${_app_bin_path}/${_T}" ${_D_echo}
|
||||
COMMAND echo "Icon=${_app_ico_path}/${_ICON_NAME}" ${_D_echo}
|
||||
COMMAND echo "Terminal=false" ${_D_echo}
|
||||
COMMAND echo "StartupNotify=true" ${_D_echo}
|
||||
#COMMAND echo "X-KDE-StartupNotify=true" ${_D_echo}
|
||||
@@ -677,7 +703,7 @@ macro(deploy_target _T)
|
||||
|
||||
#COMMAND -l "${CMAKE_LDD}" -P xcb -q ${Qt5_ROOT} -s "\"${CMAKE_PREFIX_PATH}/lib;${_add_search_path}\"" -o ${_AGD}/usr/lib -p ${_AGD}/usr/ ${_AGD}/Contents/MacOS/${_T}
|
||||
# generate deb
|
||||
COMMAND cd ${_AGD} "&&" md5deep -rl usr ">" DEBIAN/md5sums
|
||||
COMMAND cd ${_AGD} "&&" md5deep -rl usr opt ">" DEBIAN/md5sums
|
||||
COMMAND mkdir ${_VERB} -p ${_DESTINATION}
|
||||
COMMAND dpkg-deb -b ${_AGD} ${_DESTINATION}/${_deb_name}
|
||||
VERBATIM
|
||||
|
||||
Reference in New Issue
Block a user