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++ 文件,可以了