VSCode开发C++时让intelliSense正确识别include关系-程序员宅基地

技术标签: c++  vscode  开发技术  

最近开始搞C++开发,掉头发中…

开发环境使用的是VSCode,并使用CMake插件编译工程。CMake的配置文件CMakeList.txt中已经配置了各种复杂的inclue关系,这样在源码中写include时可以不用带路径,CMake编译没问题。但是在VSCode的开发环境中,智能感知(intelliSense)并不知道这些include,于是各种错误提示include的源文件找不到,看起来很不爽、很烦人。按照一般资料,你需要自行配置VSCode中的include路径,但是对于复杂的工程,要保证时刻更新,显然太麻烦了。

解决方法:CMake配置时会在输出目录(比如build目录)下生成一个compile_commands.json文件,里面包含了完整的编译命令。intelliSense可以使用该文件中的信息来实现正确的智能感知。

具体如下:

  1. 按下Ctrl+Shift+P键,在弹出的窗口中输入“C/++: Edit Configurations",这样VSCode会自动在.vscode目录下生成一个c_cpp_properties.json文件。
  2. 打开c_cpp_properties.json,内容应该是这样的:
{
    
    "configurations": [
        {
    
            "name": "Mac",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "macFrameworkPath": [
                "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks"
            ],
            "compilerPath": "/usr/bin/clang",
            "cStandard": "c11",
            "intelliSenseMode": "clang-x64",
            "configurationProvider": "ms-vscode.cmake-tools"
        }
    ],
    "version": 4
}
  1. 在configurations中加一行配置如下(路径换成你自己的):
"compileCommands": "${workspaceFolder}/build/compile_commands.json",

加了这行配置后,文件中的includePath将不再起作用。

配置完成后,用CMake构建一次,然后再看看智能感知是不是好用多了?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zazzh007/article/details/109585763

智能推荐

2023年下半年网络工程师上午真题及答案解析-程序员宅基地

文章浏览阅读1.3k次,点赞29次,收藏32次。1.当计算机突然断电时,( )中存储的信息会丢失。A.光盘 B.ROM C.RAM D.硬盘2.进程的状态有就绪态、运行态、阻塞态,其中( )的变化是不可能直接发生的。A.就绪态到运行态 B.阻塞态到就绪态 C.运行态到阻塞态 D.阻塞态到运行态3.分布式存储系统规划时至少要设计( )个节点。4.在CPU和主存之间设计 Cache的目的是( )。A.增大主存的带宽 B.扩大主存容量。_2023年下半年网络工程师上午真题

微信小程序底部tabbar自定义带弧度效果完整版案例_微信小程序定制底部菜单怎么做 中间是一个弧形-程序员宅基地

文章浏览阅读2.4k次。这是运行的效果:新建components组件文件夹,里面新建tabbarComponent文件夹,结构如下:tabbar.js代码:// tabBarComponent/tabBar.jsconst app = getApp();Component({ /** * 组件的属性列表 */ properties: { tabbar: { type: Object, value: { "backgroundColor": "#f_微信小程序定制底部菜单怎么做 中间是一个弧形

centos下的vim安装_centos. vim. setnu-程序员宅基地

文章浏览阅读3.3w次,点赞4次,收藏12次。一 . 大家的都知道Linux下是自带vi ,那么我们如何对vi使用呢?在centos下打开terminal,通过 touch aa.txt //新建一个名称为aa的文本文件。2. 用vi打开该文本 vi aa.txt3. 对文本进行操作,常用操作自行查找二. centos下安装vim,因为vi的功能没有vim丰富用yum查找源中的VIM包,不知安装哪个合适。yum search_centos. vim. setnu

文件系统缓存中两个重要参数: dirty_ratio与dirty_background_ratio-程序员宅基地

文章浏览阅读7.3k次,点赞4次,收藏11次。这两天在调优数据库性能的过程中需要降低操作系统文件Cache对数据库性能的影响,故调研了一些降低文件系统缓存大小的方法,其中一种是通过修改/proc/sys/vm/dirty_background_ration以及/proc/sys/vm/dirty_ratio两个参数的大小来实现。看了不少相关博文的介绍,不过一直弄不清楚这两个参数的区别在哪里,后来看了下面的一篇英文博客才大致了解了它们的不同。v..._dirty_background_ratio

iOS多线程编程指南(一)关于多线程编程-程序员宅基地

文章浏览阅读342次。第一章 关于多线程编程多年来,计算机的最大性能主要受限于它的中心微处理器的速度。然而由于个别处理器已经开始达到它的瓶颈限制,芯片制造商开始转向多核设计,让计算机具有了同时执行多个任务的能力。尽管Mac OS X利用了这些核心优势,在任何时候可以执行系统相关的任务,但自己的应用程序也可以通过多线程方法利用这些优势。1.1 什么是多线程多线程是一个比较轻

解秘Node.js高并发原理,以及串联同步执行并发请求的方案_nodejs单线程处理高并发-程序员宅基地

文章浏览阅读1k次。如果是 I/O 任务,就从 线程池 中拿出一个线程来处理这个事件,并指定回调函数,当线程中的 I/O 任务完成以后,就执行指定的回调函数,并把这个完成的事件放到事件队列的尾部,线程归还给线程池,等待事件循环。就像上面说的:Node.js 在主线程里维护了一个"事件队列"(Event queue),当用户的网络请求或者其它的异步操作到来时,Node 都会把它放到 Event Queue之中,此时并不会立即执行它,代码也不会被阻塞,继续往下走,直到主线程代码执行完毕。如果是单线程,他是如何处理高并发请求的?_nodejs单线程处理高并发

随便推点

warning: multi-character character constant-程序员宅基地

文章浏览阅读1w次,点赞3次,收藏10次。warning: multi-character character constant 2011-05-14 16:33:57| 分类: C/C++|举报|字号 订阅 Dev-C++提示以上错误,经查是char类型字符只能存放一个单字符的原因,错误代码如下:'. '这个点符号后面跟了个空格,编译的时候会提示警告,但仍编译成功。运行的时候_warning: multi-character character constant

C++的n叉树族谱详细信息管理系统(可以查到谁是老师)_c++族谱总结-程序员宅基地

文章浏览阅读976次,点赞5次,收藏23次。#include <stdio.h>#include <stdlib.h>#include <string.h>int MATEFLAG=0;//配偶typedef struct TreeNode{ int Num; //记录这个人拥有几个儿女 char Name[20]; //记录这个人的姓名 char Kind; //标._c++族谱总结

树莓派Pico迷你开发板扩展按键接口的方法及MicroPython编程_pico按钮原理图-程序员宅基地

文章浏览阅读2.4k次,点赞3次,收藏8次。本文介绍利用一块树莓派Pico开发板、一块面包板、两个按键、1个LED发光二极管和7跟导线等少量元器件实现树莓派Pico扩展按键接口的方法,并给出所对应按键接口的MicroPython编程示例。一、树莓派Pico扩展按键接口的方法运用树莓派Pico开发板扩展按键的方法有两种。1、使用Pico开发板RP2040 MCU片内上拉电阻扩展按键接口Pico开发板主芯片采用的是树莓派基金会自研的MCU芯片,其型号是RP2040。使用Pico开发板RP2040 MCU片内上拉电阻扩展按键接口方法原理图见图1所示_pico按钮原理图

Android 4.0使用Kotlin调用C语言以及汇编语言-程序员宅基地

文章浏览阅读2.4k次,点赞3次,收藏8次。如今,Google早已将Kotlin编程语言作为了头等语言(first-class programming language)用于Android开发中,并且在Android Studio中获得了非常全面的支持。与此同时,我们看到Google从Android Studio 3.0开始就已经支持了Java 8,过了这么多年仍然不对Java语言进行升级就能看到Google当前对Java已经持有相当冷淡的态度了,预计Java 8将是Android Studio最高能支持的Java版本了(*^_^*)。或许这跟Ora_kotlin调用c语言

Burp常见问题-程序员宅基地

文章浏览阅读753次,点赞20次,收藏23次。本文举例了几个常见的软件工具使用问题,文末会提供一些我自己整理和使用的工具资料。"在追逐零 Bug 的路上,我们不断学习、改进,更加坚定自己的技术信念。让我们相信,每一个 Bug 都是我们成长的机会。更多有关于VMware、Burp、Xshell、kali的问题可以关注博主后,在私信处拿链接,以后工具故障看这个就行给小伙伴们的意见是想清楚,自学网络安全没有捷径,相比而言系统的网络安全是最节省成本的方式,因为能够帮你节省大量的时间和精力成本。

SparkStreaming教程_sparkstreaming读取file文件java-程序员宅基地

文章浏览阅读334次。概要Spark流是对于Spark核心API的拓展,从而支持对于实时数据流的可拓展,高吞吐量和容错性流处理。数据可以由多个源取得,例如:Kafka,Flume,Twitter,ZeroMQ,Kinesis或者TCP接口,同时可以使用由如map,reduce,join和window这样的高层接口描述的复杂算法进行处理。最终,处理过的数据可以被推送到文件系统,数据库和HDFS。imag..._sparkstreaming读取file文件java