CMake(Ninja后端)用/ MT编译

时间:2018-05-07 13:54:19

标签: c++ cmake visual-studio-2017 ninja

我对此CMake compile with /MT instead of /MD有类似的问题,但有一些不同之处:

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

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

CMakeSettings.json文件中是否有任何变量可以帮助我定义/ MT编译器切换?那么图书馆的静态/动态建设呢?有关于此文件的任何帮助吗?

1 个答案:

答案 0 :(得分:2)

几周前我遇到了同样的问题,我用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()