CMake (Ninja back-end) компилируется с / MT - PullRequest
0 голосов
/ 07 мая 2018

У меня проблема, аналогичная этой CMake-компиляции с / MT вместо / MD , но с некоторыми отличиями:

Я использую Visual Studio 2017 для создания библиотеки с использованием генератора CMake и Ninja. Visual Studio предоставляет мне несколько вариантов (конфигураций), таких как x86-Debug и т. Д. Существует также файл CMakeSettings.json, который, кажется, позволяет управлять через него конфигурациями по умолчанию в Visual Studio. Но я не знаю как!

Я хочу скомпилировать свою библиотеку с / MT, но я не хочу жестко кодировать ее в файле CMakeLists.txt, как в предыдущем посте. Это означает, что я хочу скомпилировать свою библиотеку на основе выбора пользователя с помощью конфигураций.

Есть ли какая-либо переменная в файле CMakeSettings.json, которая помогает мне определить ключ / MT компилятора? Как насчет статического / динамического построения библиотеки? Есть ли какая-либо помощь об этом файле?

1 Ответ

0 голосов
/ 08 мая 2018

У меня была такая же проблема несколько недель назад, и я решил ее, используя файл CMakeSettings.json. Я объясняю решение для определения MT и метод для статического / динамического является тем же.

Используйте переменную cmakeCommandArgs внутри CMakeSettings.json, чтобы отправлять все, что вы хотите, в качестве аргументов cmake. Это может быть что-то вроде:

"cmakeCommandArgs": "-DLINK_TYPE=Static"

Тогда в CMakeLists.txt вы должны просто решить, основываясь на аргументе, который вы определили. Это может быть в следующей форме:

if ("${LINK_TYPE}" STREQUAL "Static")
    add_compile_options(/MT$<$<CONFIG:Debug>:d>)
endif()
...