使用的CMake / MT,而不是/ MD编译(Compile with /MT instead o

2019-07-17 21:18发布

我使用的是与Windows SDK和NMAKE Makefile文件窗口CMake的。

默认情况下,它与编译/MD编译器开关。

我怎样才能改变它与编译/MT开关呢?

Answer 1:

您可以修改CMAKE_CXX_FLAGS_<Build Type>和/或CMAKE_C_FLAGS_<Build Type>变量:

set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")

如果您的CMake的标志已经包含了/MD ,可以确保上述命令在该点执行/MD插入(在后面添加/MT覆盖冲突的现有选项),也可以设置从无到有的标志:

set(CMAKE_CXX_FLAGS_RELEASE "/MT")
set(CMAKE_CXX_FLAGS_DEBUG "/MTd")

,或者也可以替代现有的/MD/MDd值与/MT/MTd分别做这样的事情:

set(CompilerFlags
        CMAKE_CXX_FLAGS
        CMAKE_CXX_FLAGS_DEBUG
        CMAKE_CXX_FLAGS_RELEASE
        CMAKE_C_FLAGS
        CMAKE_C_FLAGS_DEBUG
        CMAKE_C_FLAGS_RELEASE
        )
foreach(CompilerFlag ${CompilerFlags})
  string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
endforeach()


Answer 2:

看看ucm_set_runtime -这个宏将取代标志为静态或动态运行-看到效果,使用ucm_print_flags (也签这个堆栈溢出问题)。



文章来源: Compile with /MT instead of /MD using CMake
标签: cmake