You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Neovim中配置C++项目的Include目录适配clangd

解决clangd识别不了Include目录的问题

为啥会这样?

clangd是靠compile_commands.json文件获取项目编译配置的,包括哪些目录属于include路径、用什么编译选项这些。你用Premake配好了include目录能正常编译,但没生成这个文件,clangd自然不知道你加了这些路径。

怎么解决?

1. 改Premake配置,让它生成compile_commands.json

打开你的Premake配置文件(比如premake5.lua),加俩关键配置:一是把include/TestLib设为include目录,二是开启生成compile_commands.json的选项。示例配置如下:

workspace "MyProject"
    configurations { "Debug", "Release" }
    location "build"
    -- 开启compile_commands.json生成
    compilecommands "On"

project "MyProject"
    kind "ConsoleApp"
    language "C++"
    targetdir "bin/%{cfg.buildcfg}"
    objdir "obj/%{cfg.buildcfg}"

    -- 把TestLib所在目录加入include路径,这样就能直接写#include "lib.hpp"
    includedirs { "../include/TestLib" }

    -- 把src下的所有cpp文件加进来
    files { "../src/**.cpp" }

2. 重新生成构建文件

在项目根目录跑Premake命令,生成构建文件和compile_commands.json:

premake5 gmake2 # 换成你用的生成器,比如vs2022、xcode都可以

跑完之后,compile_commands.json会出现在你配置的build目录里。

3. 让clangd找到这个文件

有两种简单方法:

  • 方法一:软链到项目根目录
    在项目根目录执行这条命令,把build里的文件链到当前目录:
    ln -s build/compile_commands.json .
    
  • 方法二:在Neovim里指定路径
    打开你的Neovim配置文件(比如init.lua),给clangd加个配置,指定compile_commands.json所在的目录:
    require'lspconfig'.clangd.setup{
      cmd = {
        "clangd",
        "--compile-commands-dir=./build", -- 这里填你实际的build目录路径
      }
    }
    

4. 验证一下

把src/main.cpp改成你想要的写法:

#include "lib.hpp"

int main(){
    Log("Hello world");
}

重新打开Neovim,clangd应该就不会再报找不到lib.hpp的错了。


内容的提问来源于stack exchange,提问作者DSlower

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 14:12:36