Wie kann ich mithilfe von CMake bestimmte Compiler-Flags für ein bestimmtes Ziel in einer bestimmten Build-Konfiguration festlegen?
Ich habe eine CMakeLists, in der ich einige Ziele mit der dynamischen Version der C-Laufzeit und einige andere Ziele mit der statischen Version erstellen möchte.
Da dies pro Ziel festgelegt werden muss, ist dies die StandardmethodeCMAKE_CXX_FLAGS_<Config>
funktioniert nicht; Dies setzt alle Ziele außer Kraft.
Zu diesem Zweck habe ich Folgendes versucht:
<code># @fn set_target_dynamic_crt # @brief Sets the given target to use the dynamic version of the CRT (/MD or # /MDd) # @param ... A list of targets to which this setting should be applied. function( set_target_dynamic_crt ) if ( MSVC ) message (WARNING ${CMAKE_BUILD_TYPE}) if (CMAKE_BUILD_TYPE STREQUAL "Debug") set_target_properties ( ${ARGN} PROPERTIES COMPILE_FLAGS "/MDd" ) else() set_target_properties ( ${ARGN} PROPERTIES COMPILE_FLAGS "/MD" ) endif() endif() endfunction() </code>
Dies wählt jedoch immer die Release-Version (/MD
) und wenn ich nach dem Buildtyp frage (dermessage
Anruf oben) Ich bekomme die leere Zeichenfolge. (Ich vermute, das liegt daran, dass ich den Visual Studio-Generator verwende. Ich habe mehr als eine Referenz gesehen, die besagtCMAKE_BUILD_TYPE
ist nur für Makefiles ...)
Wie kann ich Kompilierungsoptionen wie diese für jedes Ziel festlegen?