我使用的是与Windows SDK和NMAKE Makefile文件窗口CMake的。
默认情况下,它与编译/MD
编译器开关。
我怎样才能改变它与编译/MT
开关呢?
我使用的是与Windows SDK和NMAKE Makefile文件窗口CMake的。
默认情况下,它与编译/MD
编译器开关。
我怎样才能改变它与编译/MT
开关呢?
您可以修改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()
看看ucm_set_runtime -这个宏将取代标志为静态或动态运行-看到效果,使用ucm_print_flags (也签这个堆栈溢出问题)。