Jak mogę ustawić określone flagi kompilatora dla konkretnego celu w określonej konfiguracji kompilacji przy użyciu CMake?

Mam CMakeLists, w których chcę zbudować kilka celów przy użyciu dynamicznej wersji środowiska wykonawczego C, a także kilku innych celów przy użyciu wersji statycznej.

Ponieważ musi to być ustawione dla każdego celu, domyślna metoda ustawieniaCMAKE_CXX_FLAGS_<Config> nie działa; to zastępuje wszystkie cele.

W tym celu próbowałem czegoś takiego:

<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>

Jednak zawsze wybiera wersję wydania (/MD) i kiedy pytam o typ kompilacji (message powyżej) Otrzymuję pusty ciąg. (Podejrzewam, że to dlatego, że używam generatora Visual Studio; widziałem więcej niż jedno odniesienie, które mówiCMAKE_BUILD_TYPE jest tylko dla plików makefile ...)

Jak mogę ustawić opcje kompilacji, takie jak dla każdego celu?

questionAnswers(3)

yourAnswerToTheQuestion