c++ - CMake:将条件编译器标志添加到 Visual Studio 项目中
问题描述
Visual Studio 允许选择cl
编译器或clang-cl
编译器来构建项目——这些被称为工具集。这两个编译器具有不同的标志集,特别是用于禁用警告的不同标志。一个编译器的标志会在另一个编译器上产生错误。
通过根据使用的工具集有条件地定义编译器标志,可以在 Visual Studio 中同时为两个编译器解决此问题。这里的官方文档。
我使用 CMake 生成 Visual Studio 项目。如何让 CMake 为生成的 Visual Studio 项目添加此类条件标志?
解决方案
您可以使用CMAKE_CXX_COMPILER_ID
和CMAKE_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>
推荐阅读
- sql - LEFT JOIN on max id in where 子句
- excel - Excel - 迭代计算收敛问题/无限循环
- cors - tensorflow_model_server 访问控制允许来源
- firebase - Firebase:获取上次用户令牌刷新的时间戳?
- visual-studio-2012 - 在 CLI/C++ 中不调用派生方法
- javascript - 无法在 Contact Form 7 Plugin 上停止带有锚标记的表单提交
- c# - 无法得到我想要的字符串?
- hadoop - shell脚本中beeline命令的返回码
- vba - 强制性数据输入框
- java - 在单元测试期间找到资源文本文件,但在从 Netbeans 运行程序时未找到