如何在Ubuntu系统的JUCE项目中正常使用“转到定义”功能?
根本原因
Projucer默认导出的项目不会完整将JUCE库的头文件搜索路径暴露给IDE/编辑器的代码索引引擎,导致无法定位到JUCE源码中的定义,按照以下步骤配置即可解决:
前置通用配置(所有工具都需先完成该步骤)
- 打开Projucer中的对应项目,切换到你正在使用的Linux平台导出目标的配置页
- 找到
Header Search Paths配置项,手动添加JUCE库的modules目录路径(替换为你本地实际存放JUCE源码的对应路径,例如/opt/JUCE/modules),勾选递归搜索选项 - 重新导出项目文件,后续直接打开导出后的项目文件,不要直接打开零散的源码文件夹
各工具专属配置
CLion
- 打开CLion设置页,进入
Build, Execution, Deployment > CMake - 确认CMake配置已经识别到Projucer写入的头文件路径配置,等待IDE自动完成索引即可
- 若仍无法跳转,右键项目根目录选择
Reload CMake Project,再执行File > Invalidate Caches...重启IDE重建索引即可
VS Code
- 首先确保已经安装官方C/C++扩展
- 打开项目根目录下
.vscode文件夹中的c_cpp_properties.json文件 - 在对应配置的
includePath字段中添加JUCE的modules目录路径,示例如下:
"includePath": [ "${workspaceFolder}/**", "/opt/JUCE/modules/**" ]
- 保存文件后按下
Ctrl+Shift+P,执行C/C++: Reset IntelliSense Database命令,等待索引重建完成即可
Vim
根据你使用的索引/补全工具选择对应配置即可:
- 若使用ctags/cscope:在项目根目录执行以下命令生成包含JUCE源码的索引文件,路径替换为你本地的JUCE路径即可:
# 生成ctags索引 ctags -R . /opt/JUCE/modules # 生成cscope索引 find . /opt/JUCE/modules -name "*.h" -o -name "*.cpp" > cscope.files cscope -bq
- 若使用LSP服务(如clangd、ccls):通过
bear工具生成编译命令文件即可,操作命令如下:
# 安装bear sudo apt install bear # 在项目根目录执行构建生成compile_commands.json bear -- make
生成的compile_commands.json放在项目根目录后,LSP服务会自动读取配置,即可正常实现跳转定义功能。
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

