首页 > 解决方案 > CMake:将条件编译器标志添加到 Visual Studio 项目中

问题描述

Visual Studio 允许选择cl编译器或clang-cl编译器来构建项目——这些被称为工具集。这两个编译器具有不同的标志集,特别是用于禁用警告的不同标志。一个编译器的标志会在另一个编译器上产生错误。

通过根据使用的工具集有条件地定义编译器标志,可以在 Visual Studio 中同时为两个编译器解决此问题。这里的官方文档。

我使用 CMake 生成 Visual Studio 项目。如何让 CMake 为生成的 Visual Studio 项目添加此类条件标志?

标签: c++visual-studiocmake

解决方案


您可以使用CMAKE_CXX_COMPILER_IDCMAKE_CXX_SIMULATE_ID处理您最喜欢的编译器方式(if-else 或生成器表达式)

-T ClangCL(Visual Studio 2019)的输出:

message(STATUS ${CMAKE_CXX_COMPILER_ID}) // Clang
message(STATUS ${CMAKE_CXX_SIMULATE_ID}) // MSVC

没有工具包的输出(Visual Studio 2019):

message(STATUS ${CMAKE_CXX_COMPILER_ID}) // MSVC
message(STATUS ${CMAKE_CXX_SIMULATE_ID}) // <empty>

推荐阅读