Я пытаюсь создать решение для Visual Studio 2013 с помощью CMake, где я хочу разрешить моим конечным пользователям компилировать DLL со всеми возможными временами выполнения (из-за STL в моем интерфейсе и того факта, что ABI не то же самое ... ).
Я хочу сгенерировать решение, содержащее 4 конфигурации: DebugMD - должен быть скомпилирован как / MDd DebugMT - должен быть скомпилирован как / MTd ReleaseMD - компилируется как / MD ReleaseMT - должен быть скомпилирован как / MT
Я пытался использовать выражения генератора, но не смог заставить его правильно сгенерировать для всех конфигураций, похоже, они перезаписывают друг друга.
Я попробовал, например, следующее:
cmake_minimum_required(VERSION 3.15)
cmake_policy(SET CMP0091 NEW)
# set the project name
project(test)
# add the executable
add_executable(test test1.cpp)
set_property(TARGET test PROPERTY MSVC_RUNTIME_LIBRARY "$<$<CONFIG:ReleaseMT>:MultiThreaded>")
set_property(TARGET test PROPERTY MSVC_RUNTIME_LIBRARY "$<$<CONFIG:DebugMT>:MultiThreadedDebug>")
set_property(TARGET test PROPERTY MSVC_RUNTIME_LIBRARY "$<$<CONFIG:DebugMD>:MultiThreadedDLLDebug>")
set_property(TARGET test PROPERTY MSVC_RUNTIME_LIBRARY "$<$<CONFIG:ReleaseMD>:MultiThreadedDLL>")
(после изменения CMAKE_CONFIGURATION_TYPES TO «DebugMD; ReleaseMD; DebugMT; ReleaseMT; MinSizeRel; RelWithDebInfo»)
Есть ли у кого-нибудь предложения для выполнения sh этого поведение?