可以在写完cmake_minimum_required和project之后马上设置MSVC运行库,这样会影响所有的生成目标: set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") 对单个生成目标配置(2022/5/5 更新) 如果只想针对某个生成目标配置,可以这样: set_target_properties(你的生成目标 PROPERTIES MSVC_RUNTIME...
看来真的是没有捷径了。 http://cmake.cmake.narkive.com/MhC0rVdG/selecting-runtime-library-on-visual-studio-projects http://stackoverflow.askbro.ru/questions/16212682/why-does-this-cmake-project-not-set-the-appropriate-msvc-runtime
关于在cmake生成msvc工程时静态链接c/c++运行库的问题,很久以前写过一篇博客《cmake设置msvc的运行库(runtime library)塈指定openjpeg使用静态库》。当时的办法是在CMakeLists.txt中加一段代码将C_FLAGS_XXX,CXX_FLAGS_XXX等所有变量中的/MD替换成/MT,就这样解决了问题。 代码语言:javascript 复制 if(MSVC)# Use...
if(BUILD_CPP_TEST AND MSVC) # Use /MT flag to statically link the C runtime set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") endif() if(USE_CUDA) find_package(CUDAToolkit 11.0 REQUIRED) include_directories(${CUDAToolkit_INCLUDE_DIRS}) @@ -685,18 +690,6 @@...
CMAKE_MSVC_RUNTIME_LIBRARY - 使用静态链接CRT 这是一个非常推荐配置的选项,让LLVM使用静态链接的CRT可以避免出现编译出的clang.exe能在自己电脑上跑,但是放在别人那里就提示缺少VC运行时。 -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded CMAKE_C_FLAGS & CMAKE_CXX_FLAGS - 自定义MSVC编译选项 ...
cmake/toolchain.py @@ -98,6 +98,7 @@ class VSRuntimeBlock(Block): {% set genexpr.str = genexpr.str + '$<$<CONFIG:' + config + '>:' + value|string + '>' %} {% endfor %} + cmake_policy(SET CMP0091 NEW) set(CMAKE_MSVC_RUNTIME_LIBRARY "{{ genexpr.str }}") """)...
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") 或者 #设置为动态链接运行时库 set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL$<$<CONFIG:Debug>:Debug>") 其实,MSVC是通过这几个命令行选项/MT,/MTd,/MD和/MDd来控制的,在cmake的这些设置都是一一对应而已: ...
cmake:msvc编译第三方库时使用/MT静态库连接c/c++ runtime library 当时是为了解决用msvc编译时使用/MT连接static c library的问题。CMakeLists.txt中添加如下的代码,即可以将所有默认的C,CXX编译选项中的/MD替换成/MT. 代码语言:javascript 复制 if(MSVC)# Use thestaticClibraryforall build typesforeach(var...
通过CMAKE_MSVC_RUNTIME_LIBRARY CMAKE最低版本需求3.15 必须要在project或者enable_lanuage之前,设置policy CMP0091为NEW才能生效 cmake_policy(SETCMP0091NEW)project(XXX)if(MSVC)set(CMAKE_MSVC_RUNTIME_LIBRARY"MultiThreaded$<$<CONFIG:Debug>:Debug>")endif()...