c++ - CMake:将条件编译器标志添加到 Visual Studio 项目中

标签 c++ visual-studio cmake

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

通过定义编译器标志 conditionally,可以在 Visual Studio 中同时为两个编译器解决此问题。基于使用的工具集。官方文档 here .

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

最佳答案

您可以将 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>

关于c++ - CMake:将条件编译器标志添加到 Visual Studio 项目中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62525092/

相关文章:

c++ - 如何在不使用异常的情况下检查 constructor() 中的失败?

c++ - 有没有一种好的跨平台方法来使用 CMake 包含外部 C++ 库?

c++ - 无法减少代码(cout与exit结合)

c++ - 计算数组的平均值 C++

C++ 运行 SHELLEXECUTEINFO 并附加功能名称

c++ - 如何禁用 Windows 上的调试断言对话框?

c++ - 带有初始化的 Vector<int> 工厂不工作

windows - 如何自动化此 VB 脚本?

C++ Boost ASIO 套接字错误

在 Mac OSX 10.11.6 上找不到 clock_gettime