vscode clangd c++开发常见问题和解决方案
文章目录
在上一篇文章中,我们推荐了vscode + remote-ssh + clangd这种C++开发方式。在本文中,我们将总结使用这种方式的过程中遇到的常见问题及其解决方案。
找不到标准库头文件
原因: clangd启动时需要通过参数指定从那个目录搜索标准库头文件。
--query-driver=<string> - Comma separated list of globs for white-listing gcc-compatible drivers that are safe to execute. Drivers matching any of these globs will be used to extract system includes. e.g. /usr/bin/**/clang-*,/path/to/repo/**/g++-*
解决:修改vscode settings,加入配置
"clangd.path": "/root/.vscode-server/data/User/globalStorage/llvm-vs-code-extensions.vscode-clangd/install/12.0.1/clangd_12.0.1/bin/clangd",
"clangd.arguments": [
"--log=verbose",
"--header-insertion=never",
"--query-driver=/usr/bin/g++*"
]
工程非cmake构建或cmake执行失败
原因:在很多情况下, 我们只想浏览某个工程的代码,而不想对其进行编译。当时当工程并不是cmake构建或者执行cmake失败的时候,我们就无法生成compile_commands.json文件,clangd也就无法解析symbol并对其索引, 导致我们无法正常的浏览工程代码。
解决:解决方案其实很简单,在工程目录下创建一个CMakeLists.txt文件
cmake_minimum_required(VERSION 3.5)
# Set the project name
project (demo)
set (SRCS 源文件列表)
# Add an executable
add_executable(demo ${SRCS})
target_include_directories(demo PUBLIC
include路径列表
)
其中源文件列表和include路径列表都可通过find命令批量填充到文件CMakeLists.txt中。感兴趣的同学还可写个自动化的脚本。
然后执行cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=YES .
便可生成compile_commands.json,一切安排妥当,开始你的代码之旅吧
推荐阅读
文章作者 后端侠
上次更新 2021-12-01