From 1556908ef63594d8a8a3d6c8437758abb4bd050e Mon Sep 17 00:00:00 2001 From: sithlord48 Date: Sat, 8 Nov 2025 12:09:35 -0500 Subject: [PATCH] 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 --- CMakeLists.txt | 2 ++ deploy/windows/deploy.cmake | 2 +- src/apps/deskflow-core/CMakeLists.txt | 22 +++++++++++----------- src/apps/deskflow-daemon/CMakeLists.txt | 4 ++-- src/apps/deskflow-gui/CMakeLists.txt | 19 ++++++++++--------- 5 files changed, 26 insertions(+), 23 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 55233fa46..fb62b5b27 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 $/MacOS) set(CMAKE_INSTALL_LICENSE_DIR $/Resources) set(CMAKE_INSTALL_I18N_DIR $/MacOS/translations) endif() diff --git a/deploy/windows/deploy.cmake b/deploy/windows/deploy.cmake index f25db9672..89d85b1b8 100644 --- a/deploy/windows/deploy.cmake +++ b/deploy/windows/deploy.cmake @@ -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) diff --git a/src/apps/deskflow-core/CMakeLists.txt b/src/apps/deskflow-core/CMakeLists.txt index 8413be372..e08b35149 100644 --- a/src/apps/deskflow-core/CMakeLists.txt +++ b/src/apps/deskflow-core/CMakeLists.txt @@ -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 $/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() diff --git a/src/apps/deskflow-daemon/CMakeLists.txt b/src/apps/deskflow-daemon/CMakeLists.txt index 45bf20935..ce8a751c1 100644 --- a/src/apps/deskflow-daemon/CMakeLists.txt +++ b/src/apps/deskflow-daemon/CMakeLists.txt @@ -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() diff --git a/src/apps/deskflow-gui/CMakeLists.txt b/src/apps/deskflow-gui/CMakeLists.txt index 7cc9114e8..3b11ee2ea 100644 --- a/src/apps/deskflow-gui/CMakeLists.txt +++ b/src/apps/deskflow-gui/CMakeLists.txt @@ -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()