如何正确配置Eclipse以浏览systemd项目源码并实现函数跳转
如何正确配置Eclipse以浏览systemd项目源码并实现函数跳转
我之前在Debian上也折腾过用Eclipse浏览systemd源码,分享下我亲测有效的配置步骤,亲测能解决函数跳转和语法报错的问题:
1. 先安装必要的依赖工具
systemd用meson构建,要让Eclipse能正确解析源码,首先得生成编译数据库,所以先在Debian上装这些工具:
sudo apt install meson ninja-build clang-tools gcc libsystemd-dev
2. 生成systemd的编译配置和编译数据库
进入你下载的systemd源码目录,先创建一个构建目录,然后用meson生成配置,同时指定生成compile_commands.json(这个是CDT索引代码的核心文件):
mkdir build && cd build meson setup --buildtype=debug -Db_ndebug=false -Db_sanitize=none -Dcompile_commands=true ..
这里--buildtype=debug是为了保留更多调试信息,方便索引;-Dcompile_commands=true就是让meson生成我们需要的编译数据库文件。
3. 导入项目到Eclipse
打开Eclipse(确保安装了CDT插件,如果没装的话,先在Eclipse Marketplace里搜C/C++ Development Tools安装):
- 点击
File > Import,选择C/C++ > Existing Code as Makefile Project - 选择systemd的源码根目录作为项目目录
- 在“Toolchain for Indexer Settings”里选
Linux GCC,然后完成导入
4. 配置Eclipse使用编译数据库
导入后,默认索引可能还是有问题,需要指定用我们生成的compile_commands.json:
- 右键项目,选择
Properties > C/C++ General > Preprocessor Include Paths, Macros etc. - 切换到
Providers标签页,找到Compile Commands Database,勾选它 - 点击
Workspace按钮,选择刚才在build目录里生成的compile_commands.json文件 - 点击
Apply and Close,然后Eclipse会重新索引项目,这个过程可能需要几分钟(systemd源码量大)
5. 调整索引设置解决剩余报错
索引完成后可能还有一些小问题,比如某些宏未定义,或者目录被错误索引:
- 右键项目,
Properties > C/C++ General > Indexer - 勾选
Index unused headers和Index source and header files not included in the build(可选,但能提升跳转体验) - 切换到
Excluded Resources,可以把build目录、test目录这些不需要索引的目录排除,加快索引速度 - 如果还有宏未定义的错误,可以回到
Preprocessor Include Paths的Entries标签页,手动添加meson生成的宏定义(比如build/config.h里的内容,或者直接添加-include config.h到编译器参数里)
6. 测试函数跳转
等索引完成后,随便找一个函数调用,比如sd_event_new,按住Ctrl点击它,应该就能跳转到对应的定义处了,语法报错也会基本消失。
备注:内容来源于stack exchange,提问作者Tears4fears
相关产品推荐
相关产品推荐

