У меня есть CMakeLists, где я хочу построить некоторые цели, используя динамическую версию среды выполнения C, и некоторые другие цели, используя статическую версию.
Поскольку это необходимо установить для каждой цели, метод настройки по умолчанию CMAKE_CXX_FLAGS_<Config>
не работает; это переопределяет все цели.
С этой целью я попробовал что-то вроде следующего:
# @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()
Однако это всегда выбирает версию выпуска (/MD
), и когда я запрашиваю тип сборки (, вызов message
выше )я получаю пустой строки. (Я подозреваю, что это связано с тем, что я использую генератор Visual Studio; Я видел несколько ссылок, в которых говорится, что CMAKE_BUILD_TYPE
предназначен только для make-файлов...)
Как я могу установить такие параметры компиляции для каждой цели?