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 # setup install paths
include(GNUInstallDirs) include(GNUInstallDirs)
if (WIN32) if (WIN32)
set(CMAKE_INSTALL_BINDIR .)
set(CMAKE_INSTALL_LICENSE_DIR .) set(CMAKE_INSTALL_LICENSE_DIR .)
set(CMAKE_INSTALL_I18N_DIR translations) set(CMAKE_INSTALL_I18N_DIR translations)
elseif(UNIX AND NOT APPLE) elseif(UNIX AND NOT APPLE)
set(CMAKE_INSTALL_LICENSE_DIR ${CMAKE_INSTALL_DATADIR}/licenses/${CMAKE_PROJECT_NAME}) set(CMAKE_INSTALL_LICENSE_DIR ${CMAKE_INSTALL_DATADIR}/licenses/${CMAKE_PROJECT_NAME})
set(CMAKE_INSTALL_I18N_DIR ${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME}/translations) set(CMAKE_INSTALL_I18N_DIR ${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME}/translations)
else() 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_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) set(CMAKE_INSTALL_I18N_DIR $<TARGET_BUNDLE_CONTENT_DIR:${CMAKE_PROJECT_PROPER_NAME}>/MacOS/translations)
endif() endif()

View file

@ -6,7 +6,7 @@
set(MY_DIR ${CMAKE_CURRENT_LIST_DIR}) set(MY_DIR ${CMAKE_CURRENT_LIST_DIR})
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE) 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) include(InstallRequiredSystemLibraries)
configure_file(${MY_DIR}/pre-cpack.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/pre-cpack.cmake @ONLY) 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 app
${libs}) ${libs})
install(
TARGETS ${target}
RUNTIME_DEPENDENCY_SET coreDeps
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
if(APPLE) if(APPLE)
set_target_properties(${target} PROPERTIES set_target_properties(${target} PROPERTIES
BUILD_WITH_INSTALL_RPATH TRUE BUILD_WITH_INSTALL_RPATH TRUE
INSTALL_RPATH "@loader_path/../Libraries;@loader_path/../Frameworks" INSTALL_RPATH "@loader_path/../Libraries;@loader_path/../Frameworks"
RUNTIME_OUTPUT_DIRECTORY $<TARGET_BUNDLE_CONTENT_DIR:${CMAKE_PROJECT_PROPER_NAME}>/MacOS RUNTIME_OUTPUT_DIRECTORY ${CMAKE_INSTALL_BINDIR}
)
elseif(UNIX)
install(TARGETS ${target} DESTINATION bin)
generate_app_man(${target} "${CMAKE_PROJECT_DESCRIPTION}")
elseif(WIN32)
install(
TARGETS ${target}
RUNTIME_DEPENDENCY_SET coreDeps
DESTINATION .
) )
elseif (WIN32)
install(RUNTIME_DEPENDENCY_SET coreDeps install(RUNTIME_DEPENDENCY_SET coreDeps
PRE_EXCLUDE_REGEXES PRE_EXCLUDE_REGEXES
"api-ms-win-.*" "api-ms-win-.*"
@ -60,6 +58,8 @@ elseif(WIN32)
"^hvsifiletrust\\.dll$" "^hvsifiletrust\\.dll$"
POST_EXCLUDE_REGEXES POST_EXCLUDE_REGEXES
".*system32.*" ".*system32.*"
RUNTIME DESTINATION . RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
) )
else()
generate_app_man(${target} "${CMAKE_PROJECT_DESCRIPTION}")
endif() endif()

View file

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

View file

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