使用compile_commands.json配置includePath环境,解决vscode中引入头文件处有波浪线的问题

通过编译时生成的 compile_commands.json 文件自动完成对 vscode 中头文件路径的配置,实现 vscode 中的代码的自动跳转。完成头文件路径配置后,可以避免代码头部导入头文件部分出现波浪线,警告说无法正确找到头文件。

步骤

  1. 需要在 vscode 中安装 C++ 和 CMake 扩展插件;

在这里插入图片描述

  1. 使用下述命令重新编译代码;
catkin_make -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes

这将会导出一个编译命令文件 compile_commands.json,这可以帮助 Vscode 确定代码架构。该配置文件的的生成目录在工作空间的 build 文件夹下。

重新用 vscode 打开项目,可以看见在 .vscode 文件夹下生成的 c_cpp_properties.jsonsettings.json 文件。其中 c_cpp_properties.json 文件中的 includePath 参数中的头文件路径已经自动配置完成。

注意: 如果原先 .vscode 文件夹已经存在 c_cpp_properties.jsonsettings.json 文件的话,需要先手动删除,我测试的时候,好像不会覆盖重新生成,从而导致头文件路径无法自动添加。

在这里插入图片描述

此时,文件头部的波浪线已经消失了。如果没有,需要关闭该文件页面,然后重新打开。波浪线消失前后对比效果如下。

在这里插入图片描述

在这里插入图片描述

  1. 在文件 c_cpp_properties.json 中添加 compileCommands 选项;

也可以将 includePath 参数中的头文件路径全部删除,然后额外添加一个 compileCommands 参数,来指定生成的compile_commands.json 文件的位置,这也能够实现相同的效果。

"compileCommands": "${workspaceFolder}/build/compile_commands.json"

在这里插入图片描述

两种参数添加方式概览

这两部分内容,保留其一就好。同时,保留也没啥问题。

在这里插入图片描述

补充

在文件 c_cpp_properties.json 添加的路径,仅仅是用于 vscode 跳转显示用的,与代码编译过程无关。见参考链接 [2]。

参考

[1] vscode使用compile_commands.json配置includePath环境
[2] VSCode改了include path仍找不到头文件是为什么? - Latria的回答 - 知乎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/19559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

木馒头头戴式蓝牙耳机

这里写目录标题 木馒头二代头戴式蓝牙耳机清除连接记忆 木馒头二代头戴式蓝牙耳机清除连接记忆 在配对模式下,同时按住播放和暂停按钮4秒,LED闪烁紫色3次,即为清除成功。

电子烟开发【恒压、恒有效算法】

恒压算法 pwm是通过软件模拟的 pwm满值运行是250全占空比 #define D_TARGET_AVERAGE_VOLTAGE 3500 //R_ADC1_Vout :发热丝两端AD值 //R_ADC_FVR :电池电压AD值 //FVR_VOLTAGE :电池AD参考电压 满电值AD //R_Smk1Duty :最后…

Java 面试题:String、StringBuffer、StringBuilder 有什么区别?

几乎所有的应用开发都离不开操作字符串,理解字符串的设计和实现以及相关工具如拼接类的使用,对写出高质量代码是非常有帮助的。关于这个问题,我前面的回答是一个通常的概要性回答,至少你要知道 String 是 Immutable 的&#xff0c…

深入分析 Android Service (一)

文章目录 深入分析 Android Service (一)1. Android Service 设计说明1.1. Service 的类型1.2. Service 的生命周期1.3. 创建和启动 Service1.4. 绑定 Service1.5. ServiceConnection1.6. 前台 Service1.7. IntentService示例:创建和使用 IntentService 2. Service …

CentOS7部署Yearning并配置MySQL数据库远程访问详细流程——“cpolar内网穿透”

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 本文主要介绍在 Linux 系统简单部署 Yearning 并结合 cpolar 内网穿透工具实现远程访问,破除…

Git基本使用教程(学习记录)

参考文章链接: Git教程(超详细,一文秒懂) RUNOOB Git教程 Git学习记录 1Git概述 1.1版本控制软件功能 版本管理:更新或回退到历史上任何版本,数据备份共享代码:团队间共享代码,…

立哥开源技术-基于Python的TTS分析脚本

import pyttsx3 # 创建一个引擎实例 engine pyttsx3.init() # 获取所有可用的语音列表 voices engine.getProperty(voices) # 打印出所有可用的语音名称和属性 for voice in voices: print("Voice:") print(" - 名称: %s" % voice.name) …

【vscode篇】1-VScode设置语言为中文,2-解决中文注释乱码问题。

设置语言为中文 在前端开发中,Visual Studio Code(简称vscode)是一个非常好用的工具,但第一次打开vscode会发现界面为英文,这对很多开发者来说会很不友好(比如我),把界面设置成中文只需要安装一个插件即可&…

从零入门激光SLAM(二十二)——Fast-lio2代码详解(三) 迭代误差更新

Fast-lio2原理解析见链接从零入门激光SLAM(二十一)——看不懂FAST-LIO?进来_fastlio 雷达 更改频率-CSDN博客 注释版代码完整版见GitHub - huashu996/Fast-lio2-Supernote: Fast-lio2 code with note 本代码解析以算法流程的逻辑解析代码&…

C#面:如果不用VisualStudio,用哪个命令行编译C#程序

可以使用命令提示符或者终端来执行编译命令 csc.exe 。 步骤: 打开命令提示符或终端。使用 cd 切换到 C# 程序所在的目录。使用以下命令来编译C#程序: 其中,是你的C#源代码文件的名称(包括扩展名.cs)。如果编译成功&…

ONLYOFFICE 协作空间与 WordPress 如何集成

转载自作者:VincentYoung,略有改动 阅读本文,了解如何将 ONLYOFFICE 协作空间与 WordPress 进行集成。 ONLYOFFICE 协作空间是其去年新推出的产品,用创建虚拟办公室房间的方式,来组织公司内部团队成员的在线协作办公&…

C++中的双指针和三指针

目录 摘要 双指针(Double Pointers) 含义 使用场景 三指针(Triple Pointers) 含义 使用场景 总结 双指针的详细说明 三指针的详细说明 摘要 在C中,双指针和三指针分别是指向指针的指针和指向指向指针的指针…

C. Swap Adjacent Elements 题解

C. Swap Adjacent Elements 题解 S A E 题目大意思路代码题目大意 输入格式: 第一行一个整数 n n n ( 2 ≤ (2≤ (2≤ n n n ≤ 200000 ) ≤200000) ≤200000) 第二行 n个整数 a 1 a_1 a1​, a 2 a_2 a2​

redis 允许外网访问

要使Redis服务器允许外网访问,可以遵循以下步骤进行配置: 编辑Redis配置文件: 找到Redis的配置文件,通常位于/etc/redis/redis.conf,但位置可能因安装方式和操作系统而异。取消绑定本地地址:在配置文件中&a…

Charles-ios无法抓包原因之一证书

VPN证书安装完成后依然无法抓包存在无网络问题 VPN安装证书后直接抓包这时候抓包接口返回无网络,原因是IOS通用-关于本机-证书信任设计未开启信任

webpack5零基础入门-19HMR的应用

1.定义 HMR即HotModuleReplacement 开发时,当我们修改了其中一个模块的代码webpack默认会将所有模块重新打包编译,速度很慢所以我们需要做到修改摸个模块代码,只对这个模块的代码重新打包编译,其他模块不变,这样打包…

elementUI dialog 组件二次封装 before-close 回调函数作用

before-close 弹框关闭前的回调函数,父组件可以向子组件传递一个函数,用于修改子组件内的变量变量。应用场景如下: 1、封装 dialog 组件为 baseDialog,页面中使用 baseDialog 组件。 2、封装 dialog 组件为 baseDialog&#xff…

OpenAI和Anthropic在人工智能领域各自进行着不同的工作,以下是对它们工作内容的清晰归纳

OpenAI和Anthropic在人工智能领域各自进行着不同的工作,以下是对它们工作内容的清晰归纳: OpenAI: 公司背景与使命: 成立于2015年12月11日,总部位于美国旧金山。是一家由营利性公司OpenAI LP及非营利性母公司OpenAI …

ubuntu20.04部署gitlab流程

参考: https://blog.csdn.net/weixin_57025326/article/details/136048507 362 wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/focal/gitlab-ce_16.2.1-ce.0_amd64.deb/download.deb367 sudo apt install gitlab-ce…

初识Spring Boot:构建项目结构与组件解析

目录 前言 第一点:项目的结构 第二点:controller类的创建与使用(构造器) 第二点:service类的创建与使用(逻辑层) 第三点:Mapper类的创建与使用(数据操作) 总结 前言 在进行Sp…