在使用visual studio 打开cmake 工程编译windows 软件时,如果我们使用了静态库,需要加 /MT 或 /MTd 选项,以使程序以静态方式编译和链接。
今天在Visual studio 2019中使用时,无论怎样设置CMakeLists.txt 中的选,程序始终 是以/Md 方式编译,百思不得其解,后来在vs的配置中发现它默认使用/MD 方式,如果不手工强制修改,无法让/MT方式生效。
以下代码是在 CMakeLists.txt 中配置mt方式的。如果你用命令行方式编译,没有任何问题。但是当你打开visual studio 2019 IDE进行编译时,需要注意选项,如下面的图所示
if(MSVC)
add_compile_options(
$<$<CONFIG:>:/MT> #---------|
$<$<CONFIG:Debug>:/MTd> #---|-- Statically link the runtime libraries
$<$<CONFIG:Release>:/MT> #--|
)
endif()