【问题标题】:Introduce a new compiler to CMake为 CMake 引入新的编译器
【发布时间】:2016-07-29 16:43:14
【问题描述】:

我们使用称为 Cadul 的特定编译器。它有自己的库、目标等。与 GNU、Intel、Clang 等“标准”编译器相比,问题在于 CMake 不支持它。

首先我想使用交叉编译,但它不起作用,因为主机和目标平台是相同的。

然后我查看了 Modules,在那里我找到了名为“Compiler”的目录,其中包含为每个编译器和每种启用的语言指定的大量“.cmake”文件。我试图用“Cadul”代替“GNU”这个词,并希望看到任何变化,例如“CXX 编译器标识是 Cadul ...”。但它没有发生。

然后我刚刚从 cmake 中删除了整个目录“Modules”,并希望看到它不再起作用。令人惊讶的是它做到了。

那么有没有人将新的编译器集成到 Cmake 中?有自己的特色等等。

【问题讨论】:

  • 您可以使用toolchain.txt文件,请在cmake文档中查找。
  • The problem is that CMake does not support it - 你是什么意思? CMake 是否将错误的参数传递给您的编译器?还是什么?
  • cmake -DCMAKE_CXX_COMPILER=/path/to/cadul ../ 这是做什么的?
  • 我曾经用一些奇怪的 C 编译器做到了这一点:工具链文件和硬文件的 bash 包装器。
  • @Velkan 感谢您的建议。这似乎是正确的方法。但我认为只有在使用不同的目标系统时才使用 toolchain.txt?如果你能告诉我更多关于那个 bash 包装器的信息,我会很高兴的,我以前从来没有做过。

标签: c++ cmake


【解决方案1】:

看起来这已在 cmets 中被推荐,但尚未有人将其浓缩为答案。

您可以通过将这些行添加到您的 CMakeLists.txt (source) 来选择编译器:

SET(CMAKE_C_COMPILER /path/to/c/compiler)
SET(CMAKE_CXX_COMPILER /path/to/cpp/compiler)

如果您需要进一步自定义,使用工具链文件效果很好。文档here 中有一些示例。

【讨论】:

    【解决方案2】:

    是的,我以前做过。但是您需要的不仅仅是设置编译器路径(因为 CMake 会尝试识别此编译器,然后 - 因为 CMake 不知道 - 会引发错误)。

    可以在我的回答中找到新“编译器”的示例实现:

    它显示了一个enable_language(FOO) 示例,可以用enable_language(Cadul) 替换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-13
      • 1970-01-01
      • 2023-01-10
      • 1970-01-01
      • 1970-01-01
      • 2020-07-27
      • 1970-01-01
      • 2012-12-23
      相关资源
      最近更新 更多