CMake设置MSVC运行库

前言

本篇文章介绍如何在CMake中设置MSVC运行库,对应VS属性界面的选项如下:
在这里插入图片描述
注意:
对于非windows系统,该值将被忽略,所以我们设置该值的时候可以不用考虑平台相关

MSVC_RUNTIME_LIBRARY

这是一个变量,该变量就是用于设置MSVC运行库的值的,可以设置的值如下:

  • MultiThreaded:对应于VS的/MT,多线程静态链接运行库
  • MultiThreadedDLL:对应于VS的/MD,多线程动态链接运行库
  • MultiThreadedDebug:对应于VS的/MTd,多线程静态链接运行库的Debug模式
  • MultiThreadedDebugDLL:对应于VS的/MDd,多线程动态链接运行库的Debug模式

设置的语法规则如下:

set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")

重点是$<$<CONFIG:Debug>:Debug>这一部分,这一部分的意思是如果当前是Debug模式,返回Debug,否则返回空,所以设置指令对应的VS选项如下:

  • /MT和/MTd:
    set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
    
  • /Md和/MDd:
    set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
    

默认值

注意,如果没有进行设置,该选项的默认值是MultiThreaded$<$<CONFIG:Debug>:Debug>DLL

使用场景

整个解决方案

可以在写完cmake_minimum_required和project之后马上设置MSVC运行库,这样会影响所有的生成目标:

set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")

针对单个项目

在单个项目的CMakeLists中设置

set_target_properties(Target PROPERTIES
    MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>"
)

猜你喜欢

转载自blog.csdn.net/b1049112625/article/details/136566721