生成 `compile_commands.json`
是的,CLion + CMake 可以生成 compile_commands.json
文件,这是许多工具(包括 Sourcetrail、clangd、VSCode 等)用于了解项目编译细节的重要文件。
✅ 如何在 CLion 中生成 compile_commands.json
CLion 从 2020.1 版本开始已经原生支持生成 compile_commands.json
,你只需要简单配置一下即可。
🔧 方法一:通过 CLion 设置生成 compile_commands.json
-
打开 CLion。
-
进入菜单:
File
→Settings
(或CLion
→Preferences
on macOS)→Advanced Settings
→CMake
-
找到选项:
[✓] Generate compilation database
✅ 勾选它
-
CLion 会在每次 CMake 配置时自动生成或更新
compile_commands.json
。
📁 生成的位置一般是:
<project_root>/cmake-build-debug/compile_commands.json
或者根据你的 build 目录,比如:
<project_root>/cmake-build-release/compile_commands.json
🔁 方法二:手动生成(命令行)
如果你是用命令行编译 CMake 项目,也可以加上以下参数生成:
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -B build
这将在 build/
目录下生成 compile_commands.json
。
📎 提示:将 compile_commands.json
移动到项目根目录(可选)
有些工具要求它在项目根目录:
cp cmake-build-debug/compile_commands.json .
或者使用 symlink(推荐):
ln -s cmake-build-debug/compile_commands.json .
💡 用途:Sourcetrail 使用 compile_commands.json
你可以在 Sourcetrail 中选择:
- Language: C++
- Input type:
Compilation Database
- 然后选择你的
compile_commands.json
路径
你想知道 CLion 如何配合 Sourcetrail 使用,对吧?我给你梳理个简单实用的方案,帮助你用 CLion + Sourcetrail 来高效浏览和理解代码。
🛠️ CLion 和 Sourcetrail 配合使用的步骤
1. 生成 compile_commands.json
文件(CLion 生成)
Sourcetrail 依赖 compile_commands.json
来分析 C/C++ 项目。
-
CLion 自动生成:
- 进入
File
→Settings
(或 macOSCLion
→Preferences
)→Build, Execution, Deployment
→CMake
- 找到并勾选 “Generate compilation database”
- 重新构建项目,
compile_commands.json
会生成在你的 build 目录中(如cmake-build-debug/
)
- 进入
2. 打开 Sourcetrail 并导入项目
- 启动 Sourcetrail
- 选择 New Project
- 语言选择
C++
- 选择项目根目录
- 选择输入类型为 Compilation Database
- 选择刚才 CLion 生成的
compile_commands.json
文件路径(例如:cmake-build-debug/compile_commands.json
) - 点击开始索引(Index)
3. 在 Sourcetrail 中设置用 CLion 打开代码
-
Sourcetrail 菜单中,选择
Edit
→Preferences
-
在
Editor
里,将编辑器命令设置为:clion --line %l %f
这里
%f
是文件路径,%l
是行号,Sourcetrail 会根据点击的符号打开对应文件和行号。 -
确保你的系统能在终端通过
clion
命令打开 CLion(CLion 里可以通过Tools
→Create Command-line Launcher
来创建这个命令)。
4. 开始用 Sourcetrail 浏览代码,遇到不懂的地方,点击符号就用 CLion 打开对应代码文件,直接跳转。
📝 总结
工具 | 作用 |
---|---|
CLion | 编写、调试、生成 compile_commands.json |
Sourcetrail | 图形化浏览代码依赖,快速理解代码结构 |