git-svn-id: svn://db.shs.com.ru/pip@986 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2020-03-25 19:44:43 +00:00
parent 2dcb1e5b5e
commit 69225e7bd9

View File

@@ -83,6 +83,9 @@
if (POLICY CMP0057)
cmake_policy(SET CMP0057 NEW) # Support if() IN_LIST
endif()
if (POLICY CMP0053)
cmake_policy(SET CMP0053 NEW)
endif()
set(__prop_names "LABEL;FULLNAME;COMPANY;ICON;INFO")
set(__version_names "MAJOR;MINOR;REVISION;BUILD;SUFFIX")
include(TargetArch)
@@ -467,40 +470,71 @@ macro(deploy_target _T)
find_program(CMAKE_OBJDUMP objdump)
endif()
set(_AGD "${_DEPLOY_DIR}/${_TV}_win_${MY_ARCH}/")
set(_SEP "/")
set(_COPY "cp" "-rf")
set(_COPY_SUFFIX)
set(_MKDIR mkdir -p "${_AGD}")
set(_MKDIR_P mkdir -p "${_DESTINATION}")
set(_win_host 0)
if ("x${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "xWindows")
set(_SEP "\\")
set(_COPY xcopy "/y" "/r")
set(_COPY_SUFFIX "1>" "NUL")
file(TO_NATIVE_PATH "${_AGD}" _AGD)
file(TO_NATIVE_PATH "${_DEPLOY_DIR}/" _DEPLOY_DIR)
string(REPLACE "/" "\\" _AGD "${_AGD}")
string(REPLACE "/" "\\" _DEPLOY_DIR "${_DEPLOY_DIR}")
string(REPLACE "/" "\\" CMAKE_OBJDUMP "${CMAKE_OBJDUMP}")
set(_MKDIR if not exist "\"${_AGD}\"" mkdir "\"${_AGD}\"")
set(_MKDIR_P if not exist "\"${_DESTINATION}\"" mkdir "\"${_DESTINATION}\"")
set(_win_host 1)
endif()
foreach(_d ${_RES_DIRS} ${_PLUG_DIRS})
get_filename_component(_dirname "${_d}" NAME)
file(TO_NATIVE_PATH "${_d}/" _wr)
if ("x${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "xWindows")
set(_CMD_COPY ${_CMD_COPY} COMMAND if not exist "\"${_AGD}${_dirname}\"" mkdir "\"${_AGD}${_dirname}\"")
string(REPLACE "/" "\\" _wr "${_wr}")
else()
set(_CMD_COPY ${_CMD_COPY} COMMAND mkdir -p "${_AGD}${_dirname}")
macro(__make_win_path _in_path _out_var _is_dir _out_dir)
set(_add "")
if (${_is_dir})
set(_add "/")
endif()
set(_CMD_COPY ${_CMD_COPY} COMMAND ${_COPY} "${_wr}*" "\"${_AGD}${_dirname}${_SEP}\"" ${_COPY_SUFFIX})
endforeach()
file(TO_NATIVE_PATH "${_in_path}" ${_out_var})
string(REPLACE "//" "/" ${_out_var} "${${_out_var}}${_add}")
if (NOT "x${_out_dir}" STREQUAL "x")
string(LENGTH "${${_out_var}}" __sl)
math(EXPR __sl ${__sl}-1)
string(SUBSTRING "${${_out_var}}" 0 ${__sl} __substr)
get_filename_component(${_out_dir} "${__substr}" NAME)
#message("dirname src=\"${${_out_var}}\", len=${__sl} \"${__substr}\" = \"${${_out_dir}}\"")
endif()
string(REPLACE "/" "\\" ${_out_var} "${${_out_var}}")
endmacro()
macro(__make_dir _cmd _dest)
if (_win_host)
__make_win_path("${_dest}" __d 1 "")
set(${_cmd} ${${_cmd}} COMMAND if not exist "\"${__d}\"" mkdir "\"${__d}\"")
else()
set(${_cmd} ${${_cmd}} COMMAND mkdir -p "${_dest}")
endif()
endmacro()
macro(__make_copy _cmd _dirs _files _dest)
if (${_dirs} OR ${_files})
__make_dir(${_cmd} "${_dest}")
endif()
if (_win_host)
__make_win_path("${_dest}" _wdest 1 "")
foreach(_d ${${_dirs}})
__make_win_path("${_d}" _wsrc 1 _dirname)
__make_dir(${_cmd} "${_dest}/${_dirname}")
set(${_cmd} ${${_cmd}} COMMAND xcopy /y /r "${_wsrc}*" "\"${_wdest}${_dirname}\\\"" 1> NUL)
endforeach()
foreach(_f ${${_files}})
__make_win_path("${_f}" _wsrc 0 "")
set(${_cmd} ${${_cmd}} COMMAND xcopy /y /r "\"${_wsrc}\"" "\"${_wdest}\"" 1> NUL)
endforeach()
else()
foreach(_d ${${_dirs}})
set(${_cmd} ${${_cmd}} COMMAND cp -rf "${_d}" "${_dest}/")
endforeach()
foreach(_f ${${_files}})
set(${_cmd} ${${_cmd}} COMMAND cp -f "${_f}" "${_dest}/")
endforeach()
endif()
endmacro()
if (_win_host)
string(REPLACE "/" "\\" CMAKE_OBJDUMP "${CMAKE_OBJDUMP}")
endif()
set(_var_exe "${_DEPLOY_DIR}/${_T}.exe")
set(_var_empty)
__make_dir(_CMD_COPY "${_AGD}")
__make_dir(_CMD_COPY "${_DESTINATION}")
__make_copy(_CMD_COPY _var_empty _var_exe "${_AGD}")
__make_copy(_CMD_COPY _RES_DIRS _RES_FILES "${_AGD}")
__make_copy(_CMD_COPY _PLUG_DIRS _PLUG_FILES "${_AGD}")
__make_copy(_CMD_COPY _FILE_DIRS _FILE_FILES "${_AGD}")
add_custom_target(deploy_${_T}
# gather dir
COMMAND ${_MKDIR}
COMMAND ${_MKDIR_P}
COMMAND ${_COPY} "\"${_DEPLOY_DIR}${_T}.exe\"" "\"${_AGD}\"" ${_COPY_SUFFIX}
#COMMAND ${_COPY} "${_DEPLOY_DIR}lang${_SEP}*" "\"${_AGD}lang${_SEP}\"" ${_COPY_SUFFIX}
${_CMD_COPY}
COMMAND deploy_tool -W "\"${CMAKE_OBJDUMP}\"" -P windows -S windows -q "\"${Qt5_ROOT}\"" -s "\"${CMAKE_PREFIX_PATH}/bin;${MINGW_BIN};${DEPLOY_ADD_LIBPATH}${_DEP_LIBPATH}\"" -o ${_AGD} -p ${_AGD} "\"${_AGD}${_T}.exe\"" ${_PLUG_DIRS}
@@ -523,20 +557,27 @@ macro(deploy_target _T)
set_target_properties(${_T} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_ROOT}/Modules/PIMacOSBundle.plist.in")
set(_AGD "${_DEPLOY_DIR}/${_T}.app")
set(_DMG "${CMAKE_CURRENT_BINARY_DIR}/dmg")
macro(__make_copy _cmd _dirs _files _dest)
if (${_dirs} OR ${_files})
set(${_cmd} ${${_cmd}} COMMAND mkdir -p "${_dest}")
endif()
foreach(_d ${${_dirs}})
set(${_cmd} ${${_cmd}} COMMAND cp -rf "${_d}" "${_dest}/")
endforeach()
foreach(_f ${${_files}})
set(${_cmd} ${${_cmd}} COMMAND cp -f "${_f}" "${_dest}/")
endforeach()
endmacro()
__make_copy(_CMD_COPY _RES_DIRS _RES_FILES "${_AGD}/Contents/Resources")
__make_copy(_CMD_COPY _PLUG_DIRS _PLUG_FILES "${_AGD}/Contents/PlugIns")
__make_copy(_CMD_COPY _FILE_DIRS _FILE_FILES "${_AGD}/Contents/MacOS")
if (_ICON_NAME)
set(_CMD_COPY ${_CMD_COPY} COMMAND cp -f ${_ICON_FN} ${_AGD}/Contents/Resources)
endif()
foreach(_d ${_RES_DIRS})
set(_CMD_COPY ${_CMD_COPY} COMMAND cp -r "${_d}" "${_AGD}/Contents/Resources")
endforeach()
foreach(_d ${_PLUG_DIRS})
set(_CMD_COPY ${_CMD_COPY} COMMAND cp -r "${_d}" "${_AGD}/Contents/PlugIns")
endforeach()
add_custom_target(deploy_${_T}
# gather .app dir
COMMAND mkdir -p ${_AGD}/Contents/Resources
COMMAND mkdir -p ${_AGD}/Contents/Frameworks
COMMAND mkdir -p ${_AGD}/Contents/PlugIns
COMMAND mkdir -p ${_DESTINATION}
${_CMD_COPY}
#COMMAND cp ${_ICON_FN} ${_AGD}/Contents/Resources