我想生成一个Qt项目(C++)的 compile_commands.json
文件,方便提供补全选项,别人那里克隆下来的项目,查看代码的时候无法包含Linux下的Qt头文件库路径。无法跳转。于是就有了这个需求,之前在VS Code里看到有直接生成项目框架的插件,于是上来问问Emacs下的解决办法。另外如果Emacs下没有简单的办法,那有没有命令行的办法?因为我不熟悉C++,小白一枚,所以搞不懂这个文件要怎么生成。
那个克隆的项目地址:
我想生成一个Qt项目(C++)的 compile_commands.json
文件,方便提供补全选项,别人那里克隆下来的项目,查看代码的时候无法包含Linux下的Qt头文件库路径。无法跳转。于是就有了这个需求,之前在VS Code里看到有直接生成项目框架的插件,于是上来问问Emacs下的解决办法。另外如果Emacs下没有简单的办法,那有没有命令行的办法?因为我不熟悉C++,小白一枚,所以搞不懂这个文件要怎么生成。
那个克隆的项目地址:
mkdir build
cd build
cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=1
ln -s ./compile_commands.json ../
用过 bear 生成过这个文件,当时好像是为了用 clangd 获得代码补全。
我读了 clang/clangd 的官方文档,执行了这个命令,但是报错说缺乏文件:
CMake Error: The source directory ".../redict/src" does not appear to contain CMakeLists.txt.
那这个 CMakeLists.txt
文件是需要我手动来写的么?还是也有命令能够自动生成?
大神,你用bear是怎么弄的?我也是这样,需要获得clangd的跳转和补全信息。
看這個文件 https://github.com/rekols/redict/blob/master/redict.pro 項目用的是 qmake
不是 cmake
。沒用過 qmake
不太清楚,感覺應該也能直接生成 compile_commands.json
。
用 qtcreator 打开项目,然后见下图
或者用 bear: Clang Tidy, part 2: Integrate qmake and other build systems using Bear - KDAB
cmakelists.txt
是需要自己写的,我一开始以为这是个cmake工程。。。
楼上的方法应该是最简单的,项目不复杂的话也可以考虑手写一份cmakelist.txt
,见 Get started with CMake | Build with CMake 5.15.12
感谢大家,现在终于学会了。非常感谢!哈哈