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?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage