From 0c007eeb5604e86f203a5ad3dd380cf47f022180 Mon Sep 17 00:00:00 2001 From: reuk Date: Wed, 19 Jul 2023 15:09:27 +0100 Subject: [PATCH] CMake: Avoid overly-long rc.exe commandlines when JUCE_USER_DEFINED_RC_FILE is not defined --- extras/Build/CMake/JUCEUtils.cmake | 42 ++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/extras/Build/CMake/JUCEUtils.cmake b/extras/Build/CMake/JUCEUtils.cmake index 9eaacd22b6..8edb0a1e56 100644 --- a/extras/Build/CMake/JUCEUtils.cmake +++ b/extras/Build/CMake/JUCEUtils.cmake @@ -754,24 +754,38 @@ function(_juce_add_resources_rc source_target dest_target) return() endif() - get_target_property(juce_library_code ${source_target} JUCE_GENERATED_SOURCES_DIRECTORY) - get_target_property(input_info_file ${source_target} JUCE_INFO_FILE) + if(NOT TARGET ${source_target}_rc_lib) + get_target_property(juce_library_code ${source_target} JUCE_GENERATED_SOURCES_DIRECTORY) + get_target_property(input_info_file ${source_target} JUCE_INFO_FILE) - get_target_property(generated_icon ${source_target} JUCE_ICON_FILE) - set(dependency) + get_target_property(generated_icon ${source_target} JUCE_ICON_FILE) + set(dependency) - if(generated_icon) - set(dependency DEPENDS "${generated_icon}") + if(generated_icon) + set(dependency DEPENDS "${generated_icon}") + endif() + + set(resource_rc_file "${juce_library_code}/${source_target}_resources.rc") + + add_custom_command(OUTPUT "${resource_rc_file}" + COMMAND juce::juceaide rcfile "${input_info_file}" "${resource_rc_file}" + ${dependency} + VERBATIM) + + add_library(${source_target}_rc_lib OBJECT ${resource_rc_file}) + + set(compile_defs $>) + set(include_dirs $>) + set(filtered $) + set(has_custom_rc_include $) + + target_include_directories(${source_target}_rc_lib + PRIVATE $<${has_custom_rc_include}:${include_dirs}>) + set_source_files_properties(${resource_rc_file} PROPERTIES + COMPILE_DEFINITIONS $<${has_custom_rc_include}:${compile_defs}>) endif() - set(resource_rc_file "${juce_library_code}/${dest_target}_resources.rc") - - add_custom_command(OUTPUT "${resource_rc_file}" - COMMAND juce::juceaide rcfile "${input_info_file}" "${resource_rc_file}" - ${dependency} - VERBATIM) - - target_sources(${dest_target} PRIVATE "${resource_rc_file}") + target_link_libraries(${dest_target} PRIVATE ${source_target}_rc_lib) endfunction() function(_juce_configure_app_bundle source_target dest_target)