向CMake引入一个新的编译器
Introduce a new compiler to CMake
我们使用一个名为Cadul的特定编译器。它有自己的库、目标等。问题是,与GNU、Intel、Clang等"标准"编译器相比,CMake不支持它。
首先,我想使用交叉编译,但没有成功,因为主机和目标平台是相同的。
然后我查看了Modules,在那里我找到了名为"Compiler"的目录,其中包含为每个编译器和每个启用的语言指定的许多".cmake"文件。我试着用"Cadul"代替单词"GNU",并希望看到任何变化,比如"CXX编译器标识为Cadul…"。但这并没有发生。
然后我从cmake中删除了整个目录"Modules",并希望看到它不再工作。令人惊讶的是,它做到了。
那么,有人将新的编译器集成到Cmake中吗?具有自己的功能等。
这似乎是评论中推荐的,但还没有人将其浓缩为答案。
您可以通过将以下行添加到CMakeLists.txt(源代码)来选择编译器:
SET(CMAKE_C_COMPILER /path/to/c/compiler)
SET(CMAKE_CXX_COMPILER /path/to/cpp/compiler)
如果您需要进一步自定义,使用工具链文件效果良好。这里的文档中有一些示例。
是的,我以前做过。但是,您需要的不仅仅是设置编译器路径(因为CMake会尝试识别这个编译器,然后——因为它对CMake来说是未知的——会抛出一个错误)。
一个新"编译器"的示例实现可以在我的回答中找到:
- 从makefile到cmake的一般规则
它显示了一个可以用enable_language(Cadul)
替换的enable_language(FOO)
示例。
相关文章:
- C++,我收到一个无法理解的编译器错误
- 当类型适当的构造函数可用时,为什么一个编译器尝试使用已删除的副本构造函数
- 编译器在C++中调用另一个函数时,在参数中查找已删除的构造函数
- 为什么 MSVC C++编译器将一个简单的 Hello World 扩展为 4000 行汇编?
- 在另一个编译器中打印乱码的数组 |C++
- 一个C++编译器是为不同的平台(Linux,Windows等)多次编写的,这是真的吗?
- Qt 5测试版2,Qt Creator 2.6,MSVC错误:Qt Creaator需要一个编译器来构建.在工具包选项中
- 为什么当我通过引用传递数组时,我会收到一个编译器错误,指出我的变量未定义
- 我能否获得一个C++编译器在编译时实例化对象
- 我有编译器的情况。当我运行代码来去除一串特殊字符时,它在一个编译器中运行,但在另一个编译器中不运行?
- 我认为这是一个编译器错误,这不应该影响我的代码,但它是
- 一个编译器中的运算符优先级不同,为什么
- 有符号整数溢出为负数:这是一个编译器错误,还是我误解了优化
- Bjarne 对这个 ADL 示例的看法是错误的,还是我有一个编译器错误
- 为什么不可能构建一个编译器来确定C++函数是否会更改特定变量的值
- QT需要建立一个编译器
- 我需要破解一个c++编译器来发出和解释一个特定的类指针作为全局数组内的索引
- 为什么一个C程序编译并链接到一个C编译器,然后在运行时SIGILL
- sizeof可以应用于未捕获的变量的lambda内部吗?还是这是一个编译器错误?
- 为什么这是一个编译器错误?(g + +)