xT: clean up Windows and Mac deployment
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
# As per Qt 6.8 documentation, at least 3.16 is necessary
|
# As per Qt 6.8 documentation, at least 3.16 is necessary
|
||||||
|
# CMake 3.21 has RUNTIME_DEPENDENCY_SET.
|
||||||
cmake_minimum_required (VERSION 3.21.1)
|
cmake_minimum_required (VERSION 3.21.1)
|
||||||
|
|
||||||
file (READ ../xK-version project_version)
|
file (READ ../xK-version project_version)
|
||||||
@@ -68,8 +69,9 @@ else ()
|
|||||||
|
|
||||||
set (resource_file "${PROJECT_BINARY_DIR}/xT.rc")
|
set (resource_file "${PROJECT_BINARY_DIR}/xT.rc")
|
||||||
list (APPEND project_sources "${resource_file}")
|
list (APPEND project_sources "${resource_file}")
|
||||||
|
# Qt specifically looks up IDI_ICON1 and nothing else.
|
||||||
add_custom_command (OUTPUT "${resource_file}"
|
add_custom_command (OUTPUT "${resource_file}"
|
||||||
COMMAND ${CMAKE_COMMAND} -E echo "1 ICON \"xT.ico\""
|
COMMAND ${CMAKE_COMMAND} -E echo "IDI_ICON1 ICON \"xT.ico\""
|
||||||
> ${resource_file} VERBATIM)
|
> ${resource_file} VERBATIM)
|
||||||
set_property (SOURCE "${resource_file}"
|
set_property (SOURCE "${resource_file}"
|
||||||
APPEND PROPERTY OBJECT_DEPENDS ${icon_ico})
|
APPEND PROPERTY OBJECT_DEPENDS ${icon_ico})
|
||||||
@@ -110,13 +112,24 @@ if (ANDROID)
|
|||||||
install (TARGETS xT DESTINATION .)
|
install (TARGETS xT DESTINATION .)
|
||||||
elseif (APPLE OR WIN32)
|
elseif (APPLE OR WIN32)
|
||||||
install (TARGETS xT
|
install (TARGETS xT
|
||||||
|
RUNTIME_DEPENDENCY_SET dependencies_xT
|
||||||
BUNDLE DESTINATION .
|
BUNDLE DESTINATION .
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
|
||||||
# XXX: QTBUG-127075, which can be circumvented by manually running
|
if (WIN32)
|
||||||
# macdeployqt on xT.app before the install.
|
install (RUNTIME_DEPENDENCY_SET dependencies_xT DIRECTORIES $ENV{PATH}
|
||||||
|
PRE_EXCLUDE_REGEXES "api-ms-win-.*"
|
||||||
|
POST_EXCLUDE_REGEXES ".*[/\\]system32[/\\].*")
|
||||||
|
endif ()
|
||||||
|
|
||||||
qt_generate_deploy_app_script (TARGET xT OUTPUT_SCRIPT deploy_xT)
|
qt_generate_deploy_app_script (TARGET xT OUTPUT_SCRIPT deploy_xT)
|
||||||
install (SCRIPT "${deploy_xT}")
|
install (SCRIPT "${deploy_xT}")
|
||||||
|
|
||||||
|
# At least with Homebrew Qt, you will get QTBUG-127075,
|
||||||
|
# which can be circumvented by running macdeployqt twice.
|
||||||
|
if (APPLE)
|
||||||
|
install (SCRIPT "${deploy_xT}")
|
||||||
|
endif ()
|
||||||
else ()
|
else ()
|
||||||
install (TARGETS xT DESTINATION ${CMAKE_INSTALL_BINDIR})
|
install (TARGETS xT DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
install (FILES ../LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
install (FILES ../LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||||
@@ -129,26 +142,6 @@ else ()
|
|||||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Within MSYS2, windeployqt doesn't copy the compiler runtime,
|
|
||||||
# which is always linked dynamically by the Qt binaries.
|
|
||||||
# TODO(p): Consider whether or not to use MSYS2 to cross-compile, and how.
|
|
||||||
if (WIN32)
|
|
||||||
install (CODE [=[
|
|
||||||
set (bindir "${CMAKE_INSTALL_PREFIX}/bin")
|
|
||||||
execute_process (COMMAND cygpath -m /
|
|
||||||
OUTPUT_VARIABLE cygroot OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
if (cygroot)
|
|
||||||
execute_process (COMMAND ldd "${bindir}/xT.exe"
|
|
||||||
OUTPUT_VARIABLE ldd_output OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
string (REGEX MATCHALL " /mingw64/bin/[^ ]+ " libs "${ldd_output}")
|
|
||||||
foreach (lib ${libs})
|
|
||||||
string (STRIP "${lib}" lib)
|
|
||||||
file (COPY "${cygroot}${lib}" DESTINATION "${bindir}")
|
|
||||||
endforeach()
|
|
||||||
endif ()
|
|
||||||
]=])
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
# CPack
|
# CPack
|
||||||
set (CPACK_PACKAGE_VENDOR "Premysl Eric Janouch")
|
set (CPACK_PACKAGE_VENDOR "Premysl Eric Janouch")
|
||||||
set (CPACK_PACKAGE_CONTACT "Přemysl Eric Janouch <p@janouch.name>")
|
set (CPACK_PACKAGE_CONTACT "Přemysl Eric Janouch <p@janouch.name>")
|
||||||
|
|||||||
Reference in New Issue
Block a user