我对此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编译器切换?那么图书馆的静态/动态建设呢?有关于此文件的任何帮助吗?
答案 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()