Blade是一个C/C++构建工具,详细介绍见Blade构建工具。虽然功能强大,但是缺少IDE支持。本文介绍如何在Blade项目中使用IDE的智能提示、自动补全、自动跳转等特性。
1.VSCode
VSCode的C/C++插件(ms-vscode.cpptools)提供了C/C++代码的智能提示、自动补全和调试等功能。对于Blade项目,该插件将自动检索项目源文件,支持
- 代码智能提示和自动补全
- 相对于项目根目录或build目录的头文件跳转
例如,在Blade构建工具第4节的示例项目中:
缺点:对于大型项目,检索过程将会非常慢,导致自动补全功能经常不可用,并且内存占用也非常高。
2.CLion
CLion只支持Make和CMake两种构建工具。但是,对于不是基于Make或CMake的项目,还可以使用编译数据库(compilation database)来加载项目,从而能够使用CLion提供的IDE特性,详见文档Compilation database。
编译数据库是一个描述编译命令的JSON文件,名为compile_commands.json。CLion可以从中提取必要的编译器信息,例如包含路径、编译选项等。Blade使用的底层构建工具Ninja提供了生成编译数据库的工具compdb。
仍然以上面的Blade示例项目为例,默认情况下CLion无法进行自动补全和跳转:
可以按照以下步骤来生成编译数据库,从而启用CLion的IDE功能:
第1步:在命令行中使用blade命令构建需要的目标,目的是生成Ninja的构建文件build.ninja,可以使用-n
选项避免真正执行编译命令:
blade build -n //quick-start:hello_world
构建完成后将在blade-bin目录下生成build.ninja文件。
第2步:使用Ninja生成编译数据库,在项目根目录下执行以下命令:
ninja -f blade-bin/build.ninja -t compdb cc cxx cxxhdrs > compile_commands.json
这将在项目根目录下生成compile_commands.json文件。
第3步:使用CLion打开项目,CLion会自动加载compile_commands.json,加载完成后可以在Build窗口中看到成功信息(忽略其中的红字):
之后即可使用CLion提供的IDE特性:
跳转到符号和头文件功能也都能使用。