首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Blade项目的IDE支持

  • 25-02-16 16:41
  • 4426
  • 8492
blog.csdn.net

Blade是一个C/C++构建工具,详细介绍见Blade构建工具。虽然功能强大,但是缺少IDE支持。本文介绍如何在Blade项目中使用IDE的智能提示、自动补全、自动跳转等特性。

1.VSCode

VSCode的C/C++插件(ms-vscode.cpptools)提供了C/C++代码的智能提示、自动补全和调试等功能。对于Blade项目,该插件将自动检索项目源文件,完成检索后支持

  • 代码智能提示和自动补全
  • 相对于项目根目录或build目录的头文件跳转

自动补全和跳转功能对于普通代码和protobuf生成的代码都可用。

例如,在Blade构建工具第4节的示例项目中:

VSCode自动补全

优点:配置简单,只需安装一个插件。

缺点:

  • VSCode的自动跳转功能实际上是基于关键词匹配,并不是真正分析了C++代码。如果不同文件中有同名的函数则需要手动选择。
  • 对于大型项目,检索过程将会非常慢,导致自动补全功能经常失效,并且内存占用也非常高。

2.CLion

CLion本身只支持Make和CMake两种构建工具。但是,对于不是基于Make或CMake的项目,还可以使用编译数据库(compilation database)来加载,从而能够使用CLion提供的IDE特性,详见文档Compilation database。

编译数据库是一个描述编译命令的JSON文件,名为compile_commands.json(可以将其添加到.gitignore,从而避免提交到git)。CLion可以从中提取必要的编译器信息,例如包含路径、编译选项等。幸运的是,Blade使用的底层构建工具Ninja提供了一个工具compdb能够根据BUILD文件生成编译数据库。

仍然以上面的Blade示例项目为例,默认情况下CLion无法进行自动补全和跳转:

无法自动补全

无法跳转到符号

无法跳转到头文件

首先安装CLion。如果代码位于远程开发机上,则参考文档Remote Development连接到远程开发机。

之后按照以下步骤来生成编译数据库,从而启用CLion的IDE功能:

第1步:在命令行中使用blade命令构建需要的目标,目的是生成包含该目标及其所有下游依赖的Ninja构建文件build.ninja,可以使用-n选项避免真正执行编译命令:

blade build -n //quick-start:hello_world
  • 1

构建完成后将在blade-bin目录下生成build.ninja文件。

第2步:使用Ninja的compdb工具生成编译数据库,在项目根目录下执行以下命令:

ninja -f blade-bin/build.ninja -t compdb cc cxx cxxhdrs > compile_commands.json
  • 1

这将在项目根目录下生成compile_commands.json文件。

第3步:使用CLion打开项目,CLion会自动加载compile_commands.json,加载完成后可以在Build窗口中看到成功信息(忽略其中的红字):

导入成功

之后即可使用CLion提供的IDE特性:

CLion自动补全

CLion智能提示

跳转到符号和头文件功能也都能正常使用。

注:本文转载自blog.csdn.net的zzy979的文章"https://blog.csdn.net/zzy979481894/article/details/130352813"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top