获取使用 Neovim 和 LSP-zero/Clangd 的路径

问题描述 投票:0回答:2

我目前正在学习计算机工程并参加嵌入式系统课程,我的用途是我们使用自定义库,然后在旧版本的 Codewarrior 中编译它。

我将如何使用 nvim 为我的 lsp 创建包含路径

当我没有在本地编译代码而是稍后使用旧的 IDE 编译它时,我正在考虑如何使用 nvim 为我的 lsp 创建包含路径

任何智慧都会受到赞赏。


注意:在课堂上我们需要使用外部编辑器,而旧版本的 Code Warrior 非常糟糕,它用于为我们的微控制器进行编译,但无法用于编写代码。


我做过的事

  • 我尝试通过复制我的 vscode 配置来获取路径位置来使用compile_commands.json
  • 我尝试使用 .clangd 文件与 -I ...
  • 我尝试过其他方法,但到目前为止还没有成功

总而言之,我希望找到一个解决方案,并在入门页面和堆栈溢出上倾注了几个小时,尝试了不同的方法,但没有成功。

c++ c neovim clangd
2个回答
3
投票

最简单的方法可能是使用

.clangd
文件。根据您评论中的路径,
.clangd
文件应如下所示:

CompileFlags:
  Add: -I/home/bjc1269/Documents/github/libraries/lib/hc12c/include

我在您评论中的

.clangd
文件中看到不起作用的一些事情是:

    变量替换,如
  • ${workspaceFolder}
    。这是一个 VSCode 功能,可在某些 VSCode 设置(如 
    "clangd.arguments"
    )中使用,但在 
    .clangd
     文件中不受支持,该文件与编辑器无关(例如,它适用于没有“概念”的编辑器)工作区”)。
  • 将您的主目录称为
  • ~
    。将 
    ~
     扩展为 
    /home/<username>
     是 shell 的一项功能。 
    .clangd
    中指定的命令行参数直接传递给编译器,不经过shell处理,因此
    ~
    不起作用。
  • **
    这样的球体。老实说,我什至不确定在指定包含目录的上下文中它的预期语义是什么。
  • 方括号
  • -I
    的参数内。方括号可能会作为 YAML 语法出现在
    .clangd
    文件中,用于指定列表中的多个值,例如您可能有:
    CompileFlags:
      Add: [-I/path/to/directory1, -I/path/to/directory2]
    
    但如果你写
    -I=[/path/to/directory]
    ,括号就会逐字传递给编译器,编译器不理解这种语法。

0
投票

我建议使用

bear
为此。您只需使用构建命令调用它,
clangd
LSP 将自动读取包含内容。

© www.soinside.com 2019 - 2024. All rights reserved.