vscode clangd c++开发常见问题和解决方案

简介: vscode clangd c++开发常见问题和解决方案

找不到标准库头文件


原因: clangd启动时需要通过参数指定从那个目录搜索标准库头文件。


"clangd.arguments": [
  "--log=verbose",
  "--header-insertion=never",
  "--query-driver=/usr/bin/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,一切安排妥当,【clickhouse新特性之---clickhouse-keeper

相关文章
|
1天前
|
程序员 C# C++
lpszBlogName C#开发多年中途被迫改行C++但工作中又经常偷偷使用C#的C++程序员
通过AUMID解析出packageFamily,再根据PackageManager解析出安装目录 PackageManager是WinRT的类型,如何在c++中使用WinRT,请参考C++/WinRT 以下代码需要管理员权限才能运行。
|
7天前
|
Ubuntu Linux C语言
Could not establish connection to “xx.xx.xx.xx“:The VS Code Server faild to start.【重要解决方案】
Could not establish connection to “xx.xx.xx.xx“:The VS Code Server faild to start.【重要解决方案】
8 0
|
20天前
|
项目管理 C++
【VS Code】安装配置调试C/C++(二)
【VS Code】安装配置调试C/C++(二)
31 1
|
20天前
|
编译器 C语言 C++
【VS Code】安装配置调试C/C++(一)
【VS Code】安装配置调试C/C++(一)
33 0
|
20天前
|
Java API C++
Java JNI开发时常用数据类型与C++中数据类型转换
Java JNI开发时常用数据类型与C++中数据类型转换
31 0
|
1月前
|
存储 Shell 网络安全
【vscode】在本地加载远端环境并开发
【vscode】在本地加载远端环境并开发
93 0
|
1月前
|
API 开发工具 C++
【专栏:工具与技巧篇】使用代码编辑器(VS Code/Sublime Text)提升开发效率
【4月更文挑战第30天】在VS Code与Sublime Text两大流行代码编辑器中,开发者可借助其高效特性提升编程效率。VS Code拥有丰富的插件生态、内置Git集成、强大的调试工具、智能提示和多文件导航功能。Sublime Text则以其轻量级、快速响应、多光标编辑及自定义构建系统见长。学习编辑器的键盘快捷键、自定义配置、使用内置终端以及键绑定和宏,将助开发者进一步提高开发效率。选择适合自己的编辑器并不断适应新技术是提升开发工作流的关键。
|
1月前
|
开发框架 编译器 C++
Qt:一个强大的跨平台C++应用程序开发框架
Qt:一个强大的跨平台C++应用程序开发框架
60 1
|
1月前
|
开发框架 Linux C++
Qt:强大的跨平台C++应用程序开发框架
Qt:强大的跨平台C++应用程序开发框架
72 3
|
1天前
|
C++
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)
2 0
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)