Как я могу установить определенные флаги компилятора для конкретной цели в конкретной конфигурации сборки, используя 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-файлов ...)
Как я могу установить такие параметры компиляции для каждой цели?