【已解决】【求助】lsp-mode c++ 无法找到 SDL.h

lsp-mode + clangd-7 进行 c++ 编程

代码是: #include <SDL.h>

lsp-ui 提示:‘SDL.h’ file not found

请问如何让 clangd 知道 SDL.h 在哪呢?编译的时候是用: c++ sdl2-config --cflags --libs …/code/sdl_handmade.cpp -o handmadehero -g

我不太懂 clangd 的工作原理,但我想既然编译时需要特别指定 sdl2 libs 的位置,那么 clangd 可能也需要以某种方式设置一下?


【已解决】

解决方案:

根据友人指点,clangd 需要有一个 compile_comands.json 文件来做配置

[
    {
        "arguments": [
            "clang++",
            "-c",
            "-I/usr/include/SDL2",
            "-D_REENTRANT",
            "-g",
            "-o",
            "./build/handmadehero",
            "code/sdl_handmade.cpp"
        ],
        "directory": "/home/rws/hack/c/handmade-hero-debian",
        "file": "code/sdl_handmade.cpp"
    }
    ]

生成过程:

  • 写 Makefile (因为 handmade hero 是用的很原始的 build.sh 方案,所以本来是没有 Makefile 的)
  • sudo apt-get install bear
  • bear make 自动生成 compile_commands.json,重新加载 C++ 文件,可以了
1 个赞

请问这个compile_commands.json文件需要放到哪里呢?

项目的根目录下(但可能也有方法指定一个特定的 path)

好的, 谢谢!