首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clangd不能解析stl lib头。

clangd不能解析stl lib头。
EN

Stack Overflow用户
提问于 2022-06-09 07:55:32
回答 3查看 327关注 0票数 0

当我配置新的lsp时,我遇到了一个问题。我的lsp客户端是,clangd是我的lsp服务器。这是我的clangd设置参数

代码语言:javascript
复制
require('lspconfig')['clangd'].setup {
  on_attach = on_attach,
  flags = {
    -- This will be the default in neovim 0.7+
    debounce_text_changes = 150,
  },
  capabilities = capabilities,
  cmd = {
    'clangd',
    '--background-index',
    '--query-driver="/app/vbuild/RHEL7-x86_64/clang/latest/bin/clang, \
                     /app/vbuild/RHEL7-x86_64/clang/latest/bin/clang++, \
                     /app/vbuild/RHEL7-x86_64/gcc/latest/bin/gcc, \
                     /app/vbuild/RHEL7-x86_64/gcc/latest/bin/g++"',
    '--clang-tidy',
    '--all-scopes-completion',
    '--cross-file-rename',
    '--completion-style=detailed',
    '--header-insertion-decorators',
    '--header-insertion=iwyu',
    '--pch-storage=memory',
    '--enable-config',
    '--log=verbose'
  },
  filetypes = {"c", "cpp", "objc", "objcpp"}
}

以及我的g++和clangd版本如下

代码语言:javascript
复制
g++ (GCC) 10.3.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

clangd version 14.0.0
Features: linux
Platform: x86_64-unknown-linux-gnu

同时,我在CPATH中添加了以下包含路径

代码语言:javascript
复制
setenv CPATH "/app/vbuild/RHEL7-x86_64/gcc/latest/include/c++/10.3.0:/app/vbuild/RHEL7-x86_64/glibc/2.33/include"
setenv CPATH "/app/vbuild/RHEL7-x86_64/clang/latest/include/clang-c:/app/vbuild/RHEL7-x86_64/clang/latest/include/llvm-c:$CPATH"

但我仍然在我的新思想中发现了这些错误

在这里输入图像描述

在这里输入图像描述

似乎clangd找不到相关的stl头。但我在$CPATH中检查了包含路径。它确实有stl头。有人知道如何解决这个问题吗?谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-07-19 05:15:37

在查完响声日志之后。我想这是和https://github.com/clangd/clangd/issues/1100一样的问题

票数 0
EN

Stack Overflow用户

发布于 2022-07-05 03:43:01

如果编译器是g++,则clangd需要g++的驱动程序来查找std库。

票数 0
EN

Stack Overflow用户

发布于 2022-07-08 06:25:36

很难确定这是否是在没有看到克拉格原木的情况下出现的问题,但一个潜在的问题是,--query-driver的参数是一个regex,它与来自compile_commands.json命令的编译器可执行文件路径相匹配。

我不认为您正在传递的以逗号分隔的路径列表是有效的正则表达式。为了匹配这四个可执行文件,您可能需要使用更宽松的正则表达式(如/app/vbuild/RHEL7-x86_64/*/latest/bin/* ),或者使用替代语法(如(clang|gcc)等)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72556628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档