Visual Studio 允许选择 cl
编译器或 clang-cl
编译器来构建项目——这些称为工具集。这两个编译器有不同的标志集,特别是用于禁用警告的不同标志。一个编译器的标志会在另一个编译器上产生错误。
通过定义编译器标志 conditionally,可以在 Visual Studio 中同时为两个编译器解决此问题。基于使用的工具集。官方文档 here .
我使用 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>
关于c++ - CMake:将条件编译器标志添加到 Visual Studio 项目中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62525092/