【问题标题】:Clang based on platform in CMakeCMake中基于平台的Clang
【发布时间】:2018-06-25 08:44:51
【问题描述】:

我正在建立一个跨平台的构建环境。出于这个原因,我选择了铿锵声,如果我错了,请纠正我的原因:

  • 为不同平台使用“相同”编译器可能会减少在让 gcc 代码与 MSVC 一起使用时出现的怪癖
  • 具有 MSVC 兼容 ABI 的 Clang 让我可以像使用 MSVC 一样使用 WINAPI。

我的问题是:我如何让 CMake 根据平台找到要使用的正确 clang,即 Windows 中的 clang-clclang *nix 平台?

请注意,我将为 CMake 使用 Ninja 生成器,并且该项目是基于 Qt 的,如果这很重要的话。

【问题讨论】:

  • clang-cl.exe == clang.exe --driver-mode=cl。因此,您可以在CMakeLists.txt 中添加一些内容,以便在基于 Windows 的平台上添加驱动程序模式选项。您的项目使用/支持哪个版本的 CMake?

标签: c++ qt gcc cmake clang


【解决方案1】:

您(项目作者)不必选择编译器,调用 CMake 的用户选择编译器。

如果您对用户所做的选择不满意,您可以在 CMakeLists 中执行的唯一操作是中止并出现错误。

用户可以通过多种方式向 CMake 指定要使用的编译器。流行的示例包括设置 respective environment variables,在第一次 CMake 运行时通过 -DCMAKE_CXX_COMPILER 传递它(仅在第一次运行时;如果不从头开始重新配置,您以后无法更改它!),或者通过使用toolchain file

在 Visual Studio 上,您还可以使用 the -T option 选择构建工具链。这允许您在 Visual Studio 中使用 clang 进行构建。

您应该在项目的自述文件中记录您希望用户为 CMake 配置的编译器,并可能给他们一个小示例,说明如何通过上述方法之一进行此操作。

【讨论】:

  • 工具链是我正在寻找的。非常感谢!
猜你喜欢
  • 2011-12-13
  • 2012-01-25
  • 2012-04-02
  • 1970-01-01
  • 2014-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多