CLion教程-自定义编译器
如果您正在使用的编译器在CLion中默认情况下不受支持,那么可以切换到自定义编译器选项。您可以定义任何IDE尚未知晓的编译器,甚至可以是不公开可用的稀有编译器。这个选项在嵌入式开发方面特别有用。
准备编译器描述
为了在CLion中使用自定义编译器,您需要创建一个以YAML格式描述的配置文件。
在自定义编译器的YAML文件中,您需要识别关于您的编译器的以下细节:
- 支持的语言:每个支持的语言或语言变种都需要至少一个配置部分。
- 编译器二进制名称(可以有多个):某些工具链对于C和C++具有不同的编译器二进制文件,不同的内存模型,语言变种等;这些信息可以在工具链文档中找到。
- 标准包含目录位置:要识别这些目录,阅读编译器的文档或探索已安装的工具链文件夹树。
- 预定义宏列表:一些编译器可以报告它们的预定义宏列表,而其他编译器则不行;请参考您的编译器文档,了解如何为您的编译器获取它们。
自定义编译器配置格式包括一个带有记录列表的强制性编译器部分。每个记录都有关于编译器的描述以及用于识别编译器调用的几个标签。
第一个匹配的记录用于为CLion语言引擎提供编译器信息,包括系统定义宏列表、Clangd的目标平台名称以及系统头文件路径列表。
description | 编译器名称(强制参数) |
match-sources | 源文件名称的正则表达式 |
match-compiler-exe | 编译器可执行文件名称的正则表达式,这是从任何位置使用具有此名称的编译器所必需的(强制参数) |
match-args | 编译器命令行键 |
match-language | 检测到的语言,C或CPP(仅对CMake有效) |
code-insight-target-name | Clangd的目标平台名称 |
include-dirs | 编译器特定的头文件搜索路径;在此设置中允许使用的变量是${compiler-exe} 、${compiler-exe-dir} 、${user-home} 和${project-path} 。 |
defines | 编译器特定的宏,格式为 'name: value' 的YAML格式(value 部分可以为空) |
defines-text | 编译器特定的宏,以 '#define name value' 的C格式(value 部分可以为空) |
有用的提示:
- 您可以在一个文件中定义多个编译器。
- .yaml 文件的部分可以使用标准的YAML 锚点/别名 语法进行重用。可以使用非结构化的可选
aliases
部分作为复用部分的容器。- 如果Clangd不支持您的实际平台,请尝试使用具有相同位数、相同字节顺序等的最接近的类似平台。例如,8位平台可以被声明为
avr
。- 如果您的编译器具有自定义的语言关键字(例如,TI编译器的
_DATA_ACCESS
),请将它们作为空符号放在defines:
块中,以避免出现红色代码。
我们准备了一些示例,以帮助您入门。您可以将它们完全使用,或作为创建自己配置文件的模板。
- Embarcadero 免费 C 编译器:配置文件,测试项目。
- 德州仪器 MSP430 MCU 的代码生成工具:配置文件,测试项目。
- stm8 的 SDCC:配置文件,测试项目。
如果您为自定义编译器准备了自己的配置,请在我们的 GitHub 存储库上创建一个拉取请求,以便将其发布并与社区共享。
在工具链设置中指定 .yaml 配置
- 转到“设置 | 构建、执行、部署 | 工具链 | 自定义编译器”。
勾选“使用自定义编译器配置(*.yaml)”复选框,并提供路径:
- 这是每个项目的设置。
- 切换到“工具链”对话框,并选择要编辑的工具链,或创建一个新的工具链。
在“C 编译器”和“C++ 编译器”字段中更改为您的自定义编译器的路径:
- 或者,您可以在您的 Makefile 或通过CMake 配置文件中手动传递自定义编译器。在这种情况下,自定义编译器仅用于当前项目。
检查自定义编译器
成功配置自定义编译器后,您的代码将被正确解析,并且所有代码辅助操作将按预期工作。为了双重检查您的自定义编译器是否设置正确,请执行以下操作:
- 加载您的CMake、Makefile或编译数据库项目。
- 在编辑器中打开任何C/C++项目文件。
- 从主菜单中调用“帮助 | 诊断工具 | 显示编译器信息”。
- 如果一切正常,您将会看到编译器类型和名称,这些都是根据您的配置文件定义的,以及编译器预定义宏列表: