C++ CMake(忍者后端)使用/MT编译

C++ CMake(忍者后端)使用/MT编译,c++,cmake,visual-studio-2017,ninja,C++,Cmake,Visual Studio 2017,Ninja,我也有类似的问题,但有一些不同之处: 我正在使用Visual Studio 2017使用CMake和忍者生成器构建一个库。Visual Studio为我提供了一些选择(配置),如x86调试等。还有一个CMakeSettings.json文件,似乎我可以通过它操纵Visual Studio的默认配置。但我不知道怎么做 我想用/MT编译我的库,但我不想像上面的文章那样在CMakeLists.txt文件中硬编码它。这意味着我想根据用户通过配置的选择来编译我的库 CMakeSettings.json文件

我也有类似的问题,但有一些不同之处:

我正在使用Visual Studio 2017使用CMake和忍者生成器构建一个库。Visual Studio为我提供了一些选择(配置),如x86调试等。还有一个CMakeSettings.json文件,似乎我可以通过它操纵Visual Studio的默认配置。但我不知道怎么做

我想用/MT编译我的库,但我不想像上面的文章那样在CMakeLists.txt文件中硬编码它。这意味着我想根据用户通过配置的选择来编译我的库


CMakeSettings.json文件中是否有任何变量可以帮助我定义/MT编译器开关?图书馆的静态/动态建筑如何?关于这个文件有什么帮助吗?

几周前我遇到了同样的问题,我使用CMakeSettings.json文件解决了这个问题。我解释了定义MT的解决方案,静态/动态的方法是相同的

使用CMakeSettings.json中的cmakeCommandArgs变量发送您想要的任何内容作为cmake参数。它可以是这样的:

"cmakeCommandArgs": "-DLINK_TYPE=Static"
然后,在CMakeLists.txt中,您只需根据定义的参数进行决定。它可以是以下形式:

if ("${LINK_TYPE}" STREQUAL "Static")
    add_compile_options(/MT$<$<CONFIG:Debug>:d>)
endif()
if(“${LINK\u TYPE}”STREQUAL“Static”)
添加编译选项(/MT$)
endif()