From 04a64bc038314812b4414f1761fbfa6f401e7de0 Mon Sep 17 00:00:00 2001 From: Hugo Amiard Date: Mon, 13 Jun 2022 16:56:02 +0200 Subject: [PATCH] CMake: Set each plugins output directory individually and per-config --- src/MagnumPlugins/CMakeLists.txt | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/MagnumPlugins/CMakeLists.txt b/src/MagnumPlugins/CMakeLists.txt index 9083edc64..9ac70ce8e 100644 --- a/src/MagnumPlugins/CMakeLists.txt +++ b/src/MagnumPlugins/CMakeLists.txt @@ -33,17 +33,20 @@ macro(add_plugin plugin_name plugin_folder debug_install_dirs release_install_di corrade_add_static_plugin(${plugin_name} "${release_install_dirs}" ${metadata_file} ${ARGN}) set_target_properties(${plugin_name} ${plugin_name}-dependencies PROPERTIES FOLDER "MagnumPlugins/${plugin_name}") endif() - # Modify only runtime output location if that one is set - if(CMAKE_RUNTIME_OUTPUT_DIRECTORY) - set_target_properties(${plugin_name} PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/magnum$<$:-d>/${plugin_folder}) - endif() - # Modify the other output locations if all are set - if(CMAKE_RUNTIME_OUTPUT_DIRECTORY AND CMAKE_LIBRARY_OUTPUT_DIRECTORY AND CMAKE_ARCHIVE_OUTPUT_DIRECTORY) - set_target_properties(${plugin_name} PROPERTIES - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/magnum$<$:-d>/${plugin_folder} - ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/magnum$<$:-d>/${plugin_folder}) - endif() + # For each type of output directory and each configuration, append the plugin subfolder only if the global CMAKE_ variable was set + foreach(output RUNTIME LIBRARY ARCHIVE) + if(CMAKE_${output}_OUTPUT_DIRECTORY) + set_target_properties(${plugin_name} PROPERTIES + ${output}_OUTPUT_DIRECTORY ${CMAKE_${output}_OUTPUT_DIRECTORY}/magnum$<$:-d>/${plugin_folder}) + endif() + # This doesn't handle custom build types as there's no way to know their names + foreach(config DEBUG RELEASE RELWITHDEBINFO MINSIZEREL) + if(CMAKE_${output}_OUTPUT_DIRECTORY_${config}) + set_target_properties(${plugin_name} PROPERTIES + ${output}_OUTPUT_DIRECTORY_${config} ${CMAKE_${output}_OUTPUT_DIRECTORY_${config}}/magnum$<$:-d>/${plugin_folder}) + endif() + endforeach() + endforeach() endmacro() if(MAGNUM_WITH_ANYAUDIOIMPORTER)