Lsp-Mode的ccls有个疑问,compile_commands.json刚开始不存在时怎么建立工程的。

工程文件刚建立的时候,肯定没有compile_commands.json文件呀,那lsp-mode的工程文件怎么建立,一堆头文件和源文件报错。ccls也是报错一堆。 是不是要编写.ccls这个文件?那到底怎么写呢? 如果不是。,ccls这个文件是干嘛的?

1 个赞

How to generate a JSON Compilation Database?

  • Build systems and compilers

    • Bazel
    • Clang
    • CMake
    • Ninja
    • Qbs
    • waf
  • Specialized tools

    • bear and intercept-build
    • cdcd
    • CodeChecker log
    • compdb
    • compiledb-generator
    • Sourcetrail Extension for Visual Studio
    • sw-btrace
    • tee3/commands_to_compilation_database
    • xcpretty

看你用的是哪一种构建工具。

1 个赞

一般不是手写的,是通过其他构建工具生成的,比如 cmake

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .

简单的项目,也可以手写 compile_flags.txt ,比如

我是bear生成的,刚开始肯定没有。

我说了刚开始有?

先为项目选定构建工具, 然后就可以生成 compile_commonds.json, 现在 ide 就是这样的.

要是随便写写, 就可以用 ccls 设置选项. 或者想阅读别人开源项目但是不想构建它, 可以用 ccls 设置项目根路径, 免得开 lsp 后, 找不到头文件, 各种报错.

可以写几个template工程,再写个shell指令,新建的时候直接复制对应的文件夹,直接将构建工具、compile_commands.json 还有源文件,git的init都设置好了……

对对对,我现在就是有这样的疑问,我要看别人的工程文件,怎么操作的问题。 ccls设置项目根路径怎么操作阿,应该就算.ccls这个文件吧,里面的ccls怎么写,包含所有头文件和源文件。 :sneezing_face:

不失为一个办法,我开始也是这么想的,然后复制过来,直接能用了。 但是我还是想知道这个.ccls文件怎么写(包含各种头文件路径和源文件路径),然后放在别人的工程文件根目录,然后lsp-mode打开,直接就能阅读。

我也把我的vs_export for Visual Studio加上.几年前用过Sourcetrail,生成json文件,比较大的工程超级慢。后来就自己写了一个生成工具。一直用到现在。不知道Sourcetrail现在的速度是否有改善。