diff --git a/cmake/Modules/ObsHelpers.cmake b/cmake/Modules/ObsHelpers.cmake index d5d156604..71288cab9 100644 --- a/cmake/Modules/ObsHelpers.cmake +++ b/cmake/Modules/ObsHelpers.cmake @@ -157,8 +157,7 @@ function(add_target_resource target resource destination) install( FILES ${resource} - DESTINATION - ${OBS_OUTPUT_DIR}/$/${OBS_DATA_DESTINATION}/${destination} + DESTINATION ${OBS_DATA_DESTINATION}/${destination} COMPONENT obs_${target} EXCLUDE_FROM_ALL) endfunction() @@ -458,20 +457,16 @@ function(_install_obs_datatarget target destination) install( TARGETS ${target} - LIBRARY - DESTINATION - ${OBS_OUTPUT_DIR}/$/${OBS_DATA_DESTINATION}/${destination} - COMPONENT obs_${target} - RUNTIME - DESTINATION - ${OBS_OUTPUT_DIR}/$/${OBS_DATA_DESTINATION}/${destination} - COMPONENT obs_${target} - EXCLUDE_FROM_ALL) + LIBRARY DESTINATION ${OBS_DATA_DESTINATION}/${destination} + COMPONENT obs_${target} + RUNTIME DESTINATION ${OBS_DATA_DESTINATION}/${destination} + COMPONENT obs_${target} + EXCLUDE_FROM_ALL) if(OS_WINDOWS) if(MSVC) add_target_resource(${target} "$" - "${destination}") + "${destination}" OPTIONAL) endif() if(DEFINED ENV{obsInstallerTempDir}) @@ -487,4 +482,14 @@ function(_install_obs_datatarget target destination) EXCLUDE_FROM_ALL) endif() endif() + + add_custom_command( + TARGET ${target} + POST_BUILD + COMMAND + "${CMAKE_COMMAND}" --install .. --config $ --prefix + ${OBS_OUTPUT_DIR}/$ --component obs_${target} > + "$,nul,/dev/null>" + COMMENT "Installing ${target} to OBS rundir" + VERBATIM) endfunction() diff --git a/cmake/Modules/ObsHelpers_Windows.cmake b/cmake/Modules/ObsHelpers_Windows.cmake index 292a37749..0281f3a31 100644 --- a/cmake/Modules/ObsHelpers_Windows.cmake +++ b/cmake/Modules/ObsHelpers_Windows.cmake @@ -152,8 +152,27 @@ function(setup_target_resources target destination) endfunction() # Helper function to set up specific resource files for targets -function(add_target_resource target resource destination) - _add_target_resource(${ARGV}) +function(add_target_resource) + set(target ${ARGV0}) + set(resource ${ARGV1}) + set(destination ${ARGV2}) + if(${ARGC} EQUAL 4) + set(optional ${ARGV3}) + else() + set(optional "") + endif() + + install( + FILES ${resource} + DESTINATION ${OBS_DATA_DESTINATION}/${destination} + COMPONENT ${target}_Runtime + ${optional}) + + install( + FILES ${resource} + DESTINATION ${OBS_DATA_DESTINATION}/${destination} + COMPONENT obs_${target} + ${optional} EXCLUDE_FROM_ALL) if(DEFINED ENV{OBS_InstallerTempDir}) install( @@ -161,7 +180,7 @@ function(add_target_resource target resource destination) DESTINATION $ENV{OBS_InstallerTempDir}/${OBS_DATA_DESTINATION}/${destination} COMPONENT obs_${target} - EXCLUDE_FROM_ALL) + ${optional} EXCLUDE_FROM_ALL) endif() endfunction() diff --git a/plugins/win-capture/get-graphics-offsets/CMakeLists.txt b/plugins/win-capture/get-graphics-offsets/CMakeLists.txt index 716526037..94bd92007 100644 --- a/plugins/win-capture/get-graphics-offsets/CMakeLists.txt +++ b/plugins/win-capture/get-graphics-offsets/CMakeLists.txt @@ -20,9 +20,8 @@ target_link_libraries(get-graphics-offsets d3d9.lib dxgi.lib d3d11.lib) if(MSVC) target_compile_options(get-graphics-offsets PRIVATE "$,/MTd,/MT>") - add_target_resource( - get-graphics-offsets "$" - "obs-plugins/win-capture/") + add_target_resource(win-capture "$" + "obs-plugins/win-capture/" OPTIONAL) endif() set_target_properties(get-graphics-offsets PROPERTIES FOLDER @@ -33,5 +32,7 @@ set_target_properties( "get-graphics-offsets$,64,32>" ) -add_target_resource(get-graphics-offsets "$" +add_target_resource(win-capture "$" "obs-plugins/win-capture/") + +add_dependencies(win-capture get-graphics-offsets) diff --git a/plugins/win-capture/graphics-hook/CMakeLists.txt b/plugins/win-capture/graphics-hook/CMakeLists.txt index fbf63637e..f3119b25b 100644 --- a/plugins/win-capture/graphics-hook/CMakeLists.txt +++ b/plugins/win-capture/graphics-hook/CMakeLists.txt @@ -33,8 +33,8 @@ target_link_libraries(graphics-hook PRIVATE OBS::ipc-util Detours::Detours if(MSVC) target_compile_options(graphics-hook PRIVATE "$,/MTd,/MT>") - add_target_resource(graphics-hook "$" - "obs-plugins/win-capture/") + add_target_resource(win-capture "$" + "obs-plugins/win-capture/" OPTIONAL) endif() set_target_properties( @@ -53,22 +53,14 @@ if(TARGET Vulkan::Vulkan) target_compile_definitions(graphics-hook PRIVATE COMPILE_VULKAN_HOOK) add_target_resource( - graphics-hook "${CMAKE_CURRENT_SOURCE_DIR}/obs-vulkan64.json" + win-capture "${CMAKE_CURRENT_SOURCE_DIR}/obs-vulkan64.json" "obs-plugins/win-capture/") add_target_resource( - graphics-hook "${CMAKE_CURRENT_SOURCE_DIR}/obs-vulkan32.json" + win-capture "${CMAKE_CURRENT_SOURCE_DIR}/obs-vulkan32.json" "obs-plugins/win-capture/") - add_custom_command( - TARGET graphics-hook - POST_BUILD - COMMAND - "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/obs-vulkan64.json" - "${OBS_OUTPUT_DIR}/$/data/obs-plugins/win-capture/obs-vulkan64.json" - COMMAND - "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/obs-vulkan32.json" - "${OBS_OUTPUT_DIR}/$/data/obs-plugins/win-capture/obs-vulkan32.json" - VERBATIM) endif() -add_target_resource(graphics-hook "$" +add_target_resource(win-capture "$" "obs-plugins/win-capture/") + +add_dependencies(win-capture graphics-hook) diff --git a/plugins/win-capture/inject-helper/CMakeLists.txt b/plugins/win-capture/inject-helper/CMakeLists.txt index d5d4d25f6..80f8435fc 100644 --- a/plugins/win-capture/inject-helper/CMakeLists.txt +++ b/plugins/win-capture/inject-helper/CMakeLists.txt @@ -10,8 +10,8 @@ target_include_directories(inject-helper PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/..) if(MSVC) target_compile_options(inject-helper PRIVATE "$,/MTd,/MT>") - add_target_resource(inject-helper "$" - "obs-plugins/win-capture/") + add_target_resource(win-capture "$" + "obs-plugins/win-capture/" OPTIONAL) endif() set_target_properties( @@ -20,5 +20,7 @@ set_target_properties( OUTPUT_NAME "inject-helper$,64,32>") -add_target_resource(inject-helper "$" +add_target_resource(win-capture "$" "obs-plugins/win-capture/") + +add_dependencies(win-capture inject-helper)