Как я могу установить определенные флаги компилятора для конкретной цели в конкретной конфигурации сборки, используя CMake?

У меня есть CMakeLists, где я хочу построить некоторые цели, используя динамическую версию среды выполнения C, а некоторые другие цели, используя статическую версию.

Поскольку это должно быть установлено для цели, метод установки по умолчаниюCMAKE_CXX_FLAGS_<Config> не работает; это переопределяет для всех целей.

Для этого я попробовал что-то вроде следующего:

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

Тем не менее, это всегда выбирает версию выпуска (/MD) и когда я запрашиваю тип сборки (message позвони выше) получаю пустую строку. (Я подозреваю, что это потому, что я использую генератор Visual Studio; я видел более одной ссылки, которая говоритCMAKE_BUILD_TYPE только для make-файлов ...)

Как я могу установить такие параметры компиляции для каждой цели?

Ответы на вопрос(3)

Ваш ответ на вопрос