我在 Windows 上使用 CMake 以及 Windows SDK 和 NMake Makefile。
默认情况下,它使用 /MD
编译器开关进行编译。
如何将其更改为使用 /MT
开关进行编译?
最佳答案
您可以修改 CMAKE_<LANG>_FLAGS_<CONFIG>
变量:
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()
关于cmake - 使用CMake使用/MT而不是/MD进行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14172856/