我们有一套 跨平台的 CMake 构建脚本,我们支持使用 Visual C++ 和 GCC 构建。
我们正在尝试 Clang ,但我不知道如何使用我们的 CMake 脚本测试编译器是否是 Clang。
我应该测试什么来查看编译器是否是 Clang?我们目前正在使用 MSVC
和 CMAKE_COMPILER_IS_GNU<LANG>
分别测试 Visual C++ 和 GCC。
原文由 leedm777 发布,翻译遵循 CC BY-SA 4.0 许可协议
我们有一套 跨平台的 CMake 构建脚本,我们支持使用 Visual C++ 和 GCC 构建。
我们正在尝试 Clang ,但我不知道如何使用我们的 CMake 脚本测试编译器是否是 Clang。
我应该测试什么来查看编译器是否是 Clang?我们目前正在使用 MSVC
和 CMAKE_COMPILER_IS_GNU<LANG>
分别测试 Visual C++ 和 GCC。
原文由 leedm777 发布,翻译遵循 CC BY-SA 4.0 许可协议
你可以测试 Clang,它的前端是这样的:
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
if (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC") # clang-cl
# ...
elseif (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "GNU") # clang native
# ...
endif()
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU") # both
# ...
endif()
原文由 Jens A. Koch 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
一个可靠的检查是使用
CMAKE_<LANG>_COMPILER_ID
变量。例如,检查 C++ 编译器:如果使用像 ccache 这样的编译器包装器,这些也可以正常工作。
从 CMake 3.0.0 开始,Apple 提供的 Clang 的
CMAKE_<LANG>_COMPILER_ID
值现在是AppleClang
。要测试 Apple 提供的 Clang 和常规 Clang,请使用以下 if 条件:另请参阅 AppleClang 策略说明。
CMake 3.15 增加了对 clang-cl 和常规 clang 前端的支持。您可以通过检查变量
CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT
来确定前端变体: