From 48c52c9d7418a823f2e62f23550d02a24d6e9289 Mon Sep 17 00:00:00 2001 From: PatTheMav Date: Mon, 11 Jul 2022 13:26:42 +0200 Subject: [PATCH] cmake: Fix libraries and header files being installed for packages The `EXCLUDE_FROM_ALL` token, which is responsible for excluding components from a "unspecified" installation (which we use to create the distributed package) needs to be specified for _every_ destination specified in an `install` call. This commit remedies the issue of missing tokens in these calls. --- cmake/Modules/ObsDefaults_Windows.cmake | 4 +-- cmake/Modules/ObsHelpers.cmake | 33 +++++++++++++++++++------ cmake/Modules/ObsHelpers_Windows.cmake | 19 +++++++++++--- 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/cmake/Modules/ObsDefaults_Windows.cmake b/cmake/Modules/ObsDefaults_Windows.cmake index 193a36852..67139c535 100644 --- a/cmake/Modules/ObsDefaults_Windows.cmake +++ b/cmake/Modules/ObsDefaults_Windows.cmake @@ -35,8 +35,8 @@ macro(setup_obs_project) set(OBS_LIBRARY32_DESTINATION "bin/32bit") set(OBS_LIBRARY64_DESTINATION "bin/64bit") - set(OBS_EXECUTABLE_EXPORT_DESTINATION "bin") - set(OBS_LIBRARY_EXPORT_DESTINATION "bin") + set(OBS_EXECUTABLE_EXPORT_DESTINATION "bin/${_ARCH_SUFFIX}bit") + set(OBS_LIBRARY_EXPORT_DESTINATION "bin/${_ARCH_SUFFIX}bit") set(OBS_PLUGIN_DESTINATION "obs-plugins/${_ARCH_SUFFIX}bit") set(OBS_PLUGIN32_DESTINATION "obs-plugins/32bit") diff --git a/cmake/Modules/ObsHelpers.cmake b/cmake/Modules/ObsHelpers.cmake index 8b4b9e0e9..ba0646054 100644 --- a/cmake/Modules/ObsHelpers.cmake +++ b/cmake/Modules/ObsHelpers.cmake @@ -34,14 +34,20 @@ function(setup_binary_target target) NAMELINK_COMPONENT ${target}_Development ARCHIVE DESTINATION ${OBS_LIBRARY_DESTINATION} COMPONENT ${target}_Development - PUBLIC_HEADER DESTINATION ${OBS_INCLUDE_DESTINATION}) + PUBLIC_HEADER + DESTINATION ${OBS_INCLUDE_DESTINATION} + COMPONENT ${target}_Development + EXCLUDE_FROM_ALL) # Set up installation paths for development rundir install( TARGETS ${target} - RUNTIME DESTINATION ${OBS_EXECUTABLE_DESTINATION} COMPONENT obs_${target} - LIBRARY DESTINATION ${OBS_LIBRARY_DESTINATION} COMPONENT obs_${target} - PUBLIC_HEADER DESTINATION ${OBS_INCLUDE_DESTINATION} EXCLUDE_FROM_ALL) + RUNTIME DESTINATION ${OBS_EXECUTABLE_DESTINATION} + COMPONENT obs_${target} + EXCLUDE_FROM_ALL + LIBRARY DESTINATION ${OBS_LIBRARY_DESTINATION} + COMPONENT obs_${target} + EXCLUDE_FROM_ALL) add_custom_command( TARGET ${target} @@ -68,7 +74,9 @@ function(setup_plugin_target target) install( TARGETS ${target} - RUNTIME DESTINATION ${OBS_PLUGIN_DESTINATION} COMPONENT obs_${target} + RUNTIME DESTINATION ${OBS_PLUGIN_DESTINATION} + COMPONENT obs_${target} + EXCLUDE_FROM_ALL LIBRARY DESTINATION ${OBS_PLUGIN_DESTINATION} COMPONENT obs_${target} EXCLUDE_FROM_ALL) @@ -242,9 +250,15 @@ function(export_target target) install( TARGETS ${target} EXPORT ${target}Targets - RUNTIME DESTINATION ${OBS_EXECUTABLE_DESTINATION} COMPONENT obs_libraries - LIBRARY DESTINATION ${OBS_LIBRARY_DESTINATION} COMPONENT obs_libraries - ARCHIVE DESTINATION ${OBS_LIBRARY_DESTINATION} COMPONENT obs_libraries + RUNTIME DESTINATION ${OBS_EXECUTABLE_DESTINATION} + COMPONENT obs_libraries + EXCLUDE_FROM_ALL + LIBRARY DESTINATION ${OBS_LIBRARY_DESTINATION} + COMPONENT obs_libraries + EXCLUDE_FROM_ALL + ARCHIVE DESTINATION ${OBS_LIBRARY_DESTINATION} + COMPONENT obs_libraries + EXCLUDE_FROM_ALL INCLUDES DESTINATION ${OBS_INCLUDE_DESTINATION} PUBLIC_HEADER @@ -437,6 +451,7 @@ function(_install_obs_datatarget target destination) TARGETS ${target} LIBRARY DESTINATION ${OBS_DATA_DESTINATION}/${destination} COMPONENT obs_${target} + EXCLUDE_FROM_ALL RUNTIME DESTINATION ${OBS_DATA_DESTINATION}/${destination} COMPONENT obs_${target} EXCLUDE_FROM_ALL) @@ -453,6 +468,8 @@ function(_install_obs_datatarget target destination) RUNTIME DESTINATION $ENV{obsInstallerTempDir}/${OBS_DATA_DESTINATION}/${destination}/$ + COMPONENT obs_${target} + EXCLUDE_FROM_ALL LIBRARY DESTINATION $ENV{obsInstallerTempDir}/${OBS_DATA_DESTINATION}/${destination}/$ diff --git a/cmake/Modules/ObsHelpers_Windows.cmake b/cmake/Modules/ObsHelpers_Windows.cmake index 0205723cb..15836161d 100644 --- a/cmake/Modules/ObsHelpers_Windows.cmake +++ b/cmake/Modules/ObsHelpers_Windows.cmake @@ -8,8 +8,10 @@ function(setup_binary_target target) RUNTIME DESTINATION $ENV{OBS_InstallerTempDir}/${OBS_EXECUTABLE_DESTINATION} COMPONENT obs_${target} + EXCLUDE_FROM_ALL LIBRARY DESTINATION $ENV{OBS_InstallerTempDir}/${OBS_LIBRARY_DESTINATION} COMPONENT obs_${target} + EXCLUDE_FROM_ALL PUBLIC_HEADER DESTINATION ${OBS_INCLUDE_DESTINATION} COMPONENT obs_${target} @@ -74,6 +76,7 @@ function(setup_plugin_target target) TARGETS ${target} RUNTIME DESTINATION $ENV{OBS_InstallerTempDir}/${OBS_PLUGIN_DESTINATION} COMPONENT obs_${target} + EXCLUDE_FROM_ALL LIBRARY DESTINATION $ENV{OBS_InstallerTempDir}/${OBS_PLUGIN_DESTINATION} COMPONENT obs_${target} EXCLUDE_FROM_ALL) @@ -108,6 +111,7 @@ function(setup_script_plugin_target target) RUNTIME DESTINATION $ENV{OBS_InstallerTempDir}/${OBS_SCRIPT_PLUGIN_DESTINATION} COMPONENT obs_${target} + EXCLUDE_FROM_ALL LIBRARY DESTINATION $ENV{OBS_InstallerTempDir}/${OBS_SCRIPT_PLUGIN_DESTINATION} COMPONENT obs_${target} @@ -218,14 +222,19 @@ function(export_target target) EXPORT ${target}Targets RUNTIME DESTINATION "${OBS_EXECUTABLE_EXPORT_DESTINATION}" COMPONENT obs_libraries + EXCLUDE_FROM_ALL LIBRARY DESTINATION "${OBS_LIBRARY_EXPORT_DESTINATION}" COMPONENT obs_libraries + EXCLUDE_FROM_ALL ARCHIVE DESTINATION "${OBS_LIBRARY_EXPORT_DESTINATION}" COMPONENT obs_libraries + EXCLUDE_FROM_ALL INCLUDES DESTINATION "${OBS_INCLUDE_DESTINATION}" - PUBLIC_HEADER DESTINATION "${OBS_INCLUDE_DESTINATION}" - COMPONENT obs_libraries) + PUBLIC_HEADER + DESTINATION "${OBS_INCLUDE_DESTINATION}" + COMPONENT obs_libraries + EXCLUDE_FROM_ALL) if(MSVC) install( @@ -268,13 +277,15 @@ function(export_target target) FILE ${TARGETS_EXPORT_NAME}.cmake NAMESPACE OBS:: DESTINATION ${OBS_CMAKE_DESTINATION} - COMPONENT obs_libraries) + COMPONENT obs_libraries + EXCLUDE_FROM_ALL) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${target}Config.cmake ${CMAKE_CURRENT_BINARY_DIR}/${target}ConfigVersion.cmake DESTINATION ${OBS_CMAKE_DESTINATION} - COMPONENT obs_libraries) + COMPONENT obs_libraries + EXCLUDE_FROM_ALL) endfunction() # Helper function to do additional setup for browser source plugin