build: use CMAKE_INSTALL_BINDIR when installing runtime artifacts

On windows override this to be .
On macOS set it to the MacOS folder in the bundle
This commit is contained in:
sithlord48
2025-11-08 12:09:35 -05:00
committed by Chris Rizzitello
parent 57d36b51af
commit 1556908ef6
5 changed files with 26 additions and 23 deletions

View File

@ -162,12 +162,14 @@ configure_libs()
# setup install paths
include(GNUInstallDirs)
if (WIN32)
set(CMAKE_INSTALL_BINDIR .)
set(CMAKE_INSTALL_LICENSE_DIR .)
set(CMAKE_INSTALL_I18N_DIR translations)
elseif(UNIX AND NOT APPLE)
set(CMAKE_INSTALL_LICENSE_DIR ${CMAKE_INSTALL_DATADIR}/licenses/${CMAKE_PROJECT_NAME})
set(CMAKE_INSTALL_I18N_DIR ${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME}/translations)
else()
set(CMAKE_INSTALL_BINDIR $<TARGET_BUNDLE_CONTENT_DIR:${CMAKE_PROJECT_PROPER_NAME}>/MacOS)
set(CMAKE_INSTALL_LICENSE_DIR $<TARGET_BUNDLE_CONTENT_DIR:${CMAKE_PROJECT_PROPER_NAME}>/Resources)
set(CMAKE_INSTALL_I18N_DIR $<TARGET_BUNDLE_CONTENT_DIR:${CMAKE_PROJECT_PROPER_NAME}>/MacOS/translations)
endif()

View File

@ -6,7 +6,7 @@
set(MY_DIR ${CMAKE_CURRENT_LIST_DIR})
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION .)
set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION ${CMAKE_INSTALL_BINDIR})
include(InstallRequiredSystemLibraries)
configure_file(${MY_DIR}/pre-cpack.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/pre-cpack.cmake @ONLY)

View File

@ -38,21 +38,19 @@ target_link_libraries(
app
${libs})
install(
TARGETS ${target}
RUNTIME_DEPENDENCY_SET coreDeps
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
if(APPLE)
set_target_properties(${target} PROPERTIES
BUILD_WITH_INSTALL_RPATH TRUE
INSTALL_RPATH "@loader_path/../Libraries;@loader_path/../Frameworks"
RUNTIME_OUTPUT_DIRECTORY $<TARGET_BUNDLE_CONTENT_DIR:${CMAKE_PROJECT_PROPER_NAME}>/MacOS
)
elseif(UNIX)
install(TARGETS ${target} DESTINATION bin)
generate_app_man(${target} "${CMAKE_PROJECT_DESCRIPTION}")
elseif(WIN32)
install(
TARGETS ${target}
RUNTIME_DEPENDENCY_SET coreDeps
DESTINATION .
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_INSTALL_BINDIR}
)
elseif (WIN32)
install(RUNTIME_DEPENDENCY_SET coreDeps
PRE_EXCLUDE_REGEXES
"api-ms-win-.*"
@ -60,6 +58,8 @@ elseif(WIN32)
"^hvsifiletrust\\.dll$"
POST_EXCLUDE_REGEXES
".*system32.*"
RUNTIME DESTINATION .
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
else()
generate_app_man(${target} "${CMAKE_PROJECT_DESCRIPTION}")
endif()

View File

@ -30,7 +30,7 @@ if(WIN32)
install(
TARGETS ${target}
RUNTIME_DEPENDENCY_SET deamonDeps
DESTINATION .
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
install(RUNTIME_DEPENDENCY_SET daemonDeps
PRE_EXCLUDE_REGEXES
@ -39,6 +39,6 @@ if(WIN32)
"^hvsifiletrust\\.dll$"
POST_EXCLUDE_REGEXES
".*system32.*"
RUNTIME DESTINATION .
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
endif()

View File

@ -49,13 +49,16 @@ target_link_libraries(
Qt6::Widgets
Qt6::Network)
install(
TARGETS ${target}
RUNTIME_DEPENDENCY_SET guiDeps
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
BUNDLE DESTINATION .
)
if(WIN32)
set_target_properties(${target} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:LIBCMT")
install(
TARGETS ${target}
RUNTIME_DEPENDENCY_SET guiDeps
DESTINATION .
)
install(RUNTIME_DEPENDENCY_SET guiDeps
PRE_EXCLUDE_REGEXES
"api-ms-win-.*"
@ -63,7 +66,7 @@ if(WIN32)
"^hvsifiletrust\\.dll$"
POST_EXCLUDE_REGEXES
".*system32.*"
RUNTIME DESTINATION .
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
set(QT_DEPENDS_DIR ${CMAKE_BINARY_DIR}/qt-depends)
@ -85,7 +88,7 @@ if(WIN32)
install(
DIRECTORY ${QT_DEPENDS_DIR}/
DESTINATION .
DESTINATION ${CMAKE_INSTALL_BINDIR}
PATTERN "dx*.dll" EXCLUDE
)
@ -94,7 +97,6 @@ elseif(APPLE)
INSTALL_RPATH "@loader_path/../Libraries;@loader_path/../Frameworks"
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_BINARY_DIR}/deskflow.plist"
)
install(TARGETS ${target} BUNDLE DESTINATION .)
# Warning: Do not use for CI/production, as the `entitlements-dev.plist` file adds special
# entitlements that are only appropriate for local development.
@ -123,6 +125,5 @@ elseif(APPLE)
)
endif()
else()
install(TARGETS ${target} DESTINATION bin)
generate_app_man(${target} "${CMAKE_PROJECT_DESCRIPTION} \\(GUI\\)")
endif()