VSCode本地C/C++环境配置

 基本环境下载

1.我的系统是windows,自己先下载安装VSCode,网上视频实在太多,我建议跟着B站视频操作。

2.下载安装好后你需要明白:VSCode只是一个编辑工具,我们要写C/C++代码得编译运行,所以我们要配置它在windows下的开发环境,我们使用的是MINGW,它可以让我们在windows下使用gcc g++编译运行C/C++代码,知道这些就够了。

3.你可以在该路径下载版本为8.1.0版本的MINGW,放在某个文件夹,比如我放在E:\software\forVSCode

或者你也可以直接去官网下载

同样放在E:\software\forVSCode,这个是11.1.0的版本,注意不要下载最新的,因为我遇到版本问题带来的segmentation fault 错误且不容易发现。

如果你不想下载11.1.0或者你对于不同版本名称有所困惑,请你查看链接。

4.然后解压,然后复制它的 bin目录到系统环境变量中去;比如复制E:\software\forVSCode\mingw64\bin到环境变量中。

5.我们在在cmd中使用gcc --version 或者使用 where gcc 命令验证是否添加成功。

6.然后在本地创建一个文件夹并用vscode打开,我们打算把代码放在这个文件夹下,把他作为我们的工作区。

7.下载C/C++扩展。

单个.c文件怎么编译运行 

8.此时你可以写代码了,如果在#include头文件的时候发现出现红色波浪线,请你检查下述图片中的includePath:
如果为空或者不是你刚下载的路径请你复制你的mingw的include目录并添加进去。

9.下面应该配置tasks.json了,点击下图中的配置任务,:

 在弹出的界面中,选择C/C++:gcc.exe生成活动文件,此时你的工作区下生成了tasks.json文件。大概长下面这样,注意:如果这一步骤遇到了麻烦,请查看下图:

依照它的步骤执行即可,或者干脆直接新建一个tasks.json然后拷贝下图进去直接修改。 

{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "cppbuild",
      "label": "C/C++: gcc.exe 生成活动文件",
      "command": "E:/software/forVSCode/mingw64/bin/gcc.exe", //编译器路径
      "args": [
        "-fdiagnostics-color=always",
        "-g",
        "${file}",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}.exe" //生成可执行文件路径及名称,即:就在这个文件所在路径下生成一个去掉源文件扩展名后加上.exe的一个文件。
      ],
      "options": {
        "cwd": "E:/software/forVSCode/mingw64/bin"
      },
      "problemMatcher": [
        "$gcc"
      ],
      "group": "build",
      "detail": "编译器:E:/software/forVSCode/mingw64/bin/gcc.exe"
    }
  ]
}

10.鼠标点击源文件,然后点击下图:

 ·如果出现“终端进程启动失败(退出代码: -1)。 * 终端将被任务重用,按任意键关闭。”的错误。

请检查tasks.json中的:

      "options": {
        "cwd": "E:/software/forVSCode/mingw64/bin"
      },

是否写对。


此外,你使用这种方法编译文件时要记得鼠标点击你要编译的源文件,而不是点击其他文件,否则你将得到这个错误:

总之,你要记着:此时我们编译代码的操作就是终端-运行生成任务的方式,只要.vscode下的配置文件tasks.json(编译依赖这个文件)正确即可,我们在创建新的工程的时候也可以直接把.vscode文件夹拷贝过去,根据自己需要决定是否修改或者不修改,实现复用。

11.如果一切顺利的话,你将得到一个exe文件,键盘同时按下Ctrl+`打开终端:

hello被打印出来。

多个.c文件怎么编译运行

12.此外值得注意的是:上述方法针对的是单文件,下面我们讲解多个C/C++文件。

我们继续创建一个新的文件夹,并用vscode打开。并把之前的.vscode复制过来,略微改造:

我的修改结果:

{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "cppbuild",
      "label": "C/C++: gcc.exe 生成活动文件",
      "command": "E:/software/forVSCode/mingw64/bin/gcc.exe", //编译器路径
      "args": [
        "-fdiagnostics-color=always",
        "-g",
        "${workspaceFolder}/*.c",
        "-o",
        "${workspaceFolder}/${workspaceRootFolderName}.exe" //生成可执行文件路径
      ],
      "options": {
        "cwd": "E:/software/forVSCode/mingw64/bin"
      },
      "problemMatcher": [
        "$gcc"
      ],
      "group": "build",
      "detail": "编译器:E:/software/forVSCode/mingw64/bin/gcc.exe"
    }
  ]
}

 然后写好两个.c源文件,用于测试验证。

此时继续点击-终端-运行生成任务。

然后Ctrl+`打开终端,运行可执行文件。

C++文件编译运行 

13.此时我们已经学会了在vscode下编译单个C文件和多个C文件,那么C++呢?
我们回到最开始编译单文件的工作区,Ctrl+shift+P,点击C/C++编辑配置,我们来到这里:

 

修改后,我们可以看到c_cpp_properties.json多了一个C++的配置:

此时,我们还缺少对于tasks.json的配置:
鼠标点击我们写好的hello.cpp,然后点击:

此时tasks.json增加了相关配置:

此时,点击-终端-运行生成任务,选择g++.exe,然后Ctrl+`打开终端,然后运行即可:

 

同样的,要编译多个C++文件,我们只需要修改tasks.json即可。

14.下面我们创建launch.json文件,为我们调试文件做准备。

 弹出后,选择C++(GDB)。

点击“添加配置”:

然后选择“C/C++ (GDB启动)。

生成默认配置是不能用的,我们必须做出相关修改:
 

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(gdb) 启动",
      "type": "cppdbg",
      "request": "launch",
      "program": "${fileDirname}/${fileBasenameNoExtension}.exe", //调试谁?当然是tasks.json生成的可执行文件
      "args": [],
      "stopAtEntry": false,
      "cwd": "${fileDirname}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "miDebuggerPath": "E:\\software\\forVSCode\\mingw64\\bin\\gdb.exe", //用谁调试,我们使用mingw下的gdb.exe
      "setupCommands": [
        {
          "description": "为 gdb 启用整齐打印",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        },
        {
          "description": "将反汇编风格设置为 Intel",
          "text": "-gdb-set disassembly-flavor intel",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

 如上是我的修改后的文件,你需要修改两行:program,miDebuggerPath,分别是你要调试谁?用什么工具调试?

下面开始调试:

在3 4行打好断点,然后按F5开始调试。具体命令如下: 

 你也可以使用图形窗口来调试:

 到此,我们就讲解完了Windows下vscode的配置调试。

vscode是一个强大的工具,不止C/C++.........任重而道远。

其他

vscode调试依赖launch.json,编译依赖tasks.json。

 

vscode中要分清设置中的‘工作区’ 和‘ 用户 ’  ,这两个概念。前者指的是你打开的某个文件夹,他可以和你用户有不一样的配置。

VSCode开发Linux应用程序

我最近遇到了如下错误:​namespace std has no member “mutex”。经过查询发现是我们下载的MingGW版本不支持std::mutex std::condition_variable等Linux API,仅仅可以支持std::cout std::endl;等API。

于是回到这个位置:E:\software\forVSCode。

shift+delete掉旧的mingw64,然后下载下述图片中的压缩包,重新解压缩,其他均不必改变。MinGW的版本为:
下载链接

这样Linux API也可以在VSCode上使用了 。

注意:初学者大概率遇不到Linux API,所以这个章节可以忽略,以后用到现用现查。 

拓展

 clangd插件

最终的json文件

c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${default}"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "cStandard": "c17",
            "cppStandard": "gnu++17",
            "intelliSenseMode": "gcc-x64",
            "compilerPath": "E:\\software\\forVSCode\\mingw64\\bin\\gcc.exe"
        },
        {
            "name": "C++",
            "includePath": [
                "${default}"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "cStandard": "c17",
            "cppStandard": "c++20",
            "intelliSenseMode": "gcc-x64",
            "compilerPath": "E:\\software\\forVSCode\\mingw64\\bin\\g++.exe"
        }
    ],
    "version": 4
}

 launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(gdb) 启动",
      "type": "cppdbg",
      "request": "launch",
      "program": "${fileDirname}/${fileBasenameNoExtension}.exe", //调试谁?当然是tasks.json生成的可执行文件
      "args": [],
      "stopAtEntry": false,
      "cwd": "${fileDirname}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "miDebuggerPath": "E:\\software\\forVSCode\\mingw64\\bin\\gdb.exe", //用谁调试,我们使用mingw下的gdb.exe
      "setupCommands": [
        {
          "description": "为 gdb 启用整齐打印",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        },
        {
          "description": "将反汇编风格设置为 Intel",
          "text": "-gdb-set disassembly-flavor intel",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "cppbuild",
      "label": "C/C++: gcc.exe 生成活动文件",
      "command": "E:/software/forVSCode/mingw64/bin/gcc.exe",
      "args": [
        "-fdiagnostics-color=always",
        "-g",
        "${file}",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}.exe"
      ],
      "options": {
        "cwd": "E:/software/forVSCode/mingw64/bin"
      },
      "problemMatcher": [
        "$gcc"
      ],
      "group": "build",
      "detail": "编译器:E:/software/forVSCode/mingw64/bin/gcc.exe"
    },
    {
      "type": "cppbuild",
      "label": "C/C++: g++.exe 生成活动文件",
      "command": "E:\\mingw_bulids\\mingw64\\bin\\g++.exe",
      "args": [
        "-fdiagnostics-color=always",
        "-g",
        "${file}",
        "-o",
        "${fileDirname}\\${fileBasenameNoExtension}.exe"
      ],
      "options": {
        "cwd": "${fileDirname}"
      },
      "problemMatcher": [
        "$gcc"
      ],
      "group": "build",
      "detail": "编译器: E:/software/forVSCode/mingw64/bin/g++.exe"
    }
  ]
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[CKS] K8S NetworkPolicy Set Up

最近准备花一周的时间准备CKS考试,在准备考试中发现有一个题目关于不安全项目修复的题目。 ​ 专栏其他文章: [CKS] Create/Read/Mount a Secret in K8S-CSDN博客[CKS] Audit Log Policy-CSDN博客 -[CKS] 利用falco进行容器日志捕捉和安全监控-CSDN博客[CKS] K8S Ne…

【实验10】卷积神经网络(1)卷积算子

目录​​​​​​​ 1 自定义二维卷积算子 2 自定义带步长和零填充的二维卷积算子 3 实现图像边缘检测 4 自定义卷积层算子和汇聚层算子 4.1卷积层: 4.2 汇聚层: 5 学习torch.nn.Conv2d()、torch.nn.MaxPool2d();torch.nn.avg_pool2d()&…

英伟达HOVER——用于人形机器人的多功能全身控制器:整合不同的控制模式且实现彼此之间的无缝切换

前言 前几天,一在长沙的朋友李总发我一个英伟达HOVER的视频(自从我今年年初以来持续不断的解读各大顶级实验室的最前沿paper、以及分享我司七月在具身领域的探索与落地后,影响力便越来越大了,不断加油 ),该视频说的有点玄乎&…

vue-h5:在h5中实现相机拍照加上身份证人相框和国徽框

1.基础功能 参考: https://blog.csdn.net/weixin_45148022/article/details/135696629 https://juejin.cn/post/7327353533618978842?searchId20241101133433B2BB37A081FD6A02DA60 https://www.freesion.com/article/67641324321/ https://github.com/AlexKrat…

如何使用IDEA创建Maven/SSM工程?

鉴于很多学校还在教授SSMJSP,很多同学不会使用IDEA创建Maven工程,这里进行说明 windows下安装jdk并配置环境 添加链接描述Windows下安装Maven并配置环境 首先你要本地安装jdk,Maven并配置基础环境变量,然后对IDEA进行jdk、Mave…

SD-WAN远程监控组网解决方案

在当今,企业对远程监控与管理的需求日益增加。无论是连锁门店的实时运营监控,还是跨区域的团队项目协作,企业都需要高效、稳定且安全的网络支持。传统网络连接方式,例如MPLS(多协议标签交换),虽…

SQL练习(2)

题源:牛客官网 选择题 假设创建新用户nkw,现在想对于任何IP的连接,仅拥有user数据库里面的select和insert权限,则列表语句中能够实现这一要求的语句是() A grant select ,insert on *.* to nkw% B grant…

Python http打印(http打印body)flask demo(http调试demo、http demo、http printer)

文章目录 代码解释 代码 # flask_http_printer.pyfrom flask import Flask, request, jsonify import jsonapp Flask(__name__)app.route(/printinfo, methods[POST]) def print_info():# 分隔符separator "-" * 60# 获取请求头headers request.headers# 获取 JS…

1163:阿克曼(Ackmann)函数

【题目描述】 阿克曼(Ackmann)函数A(m&#xff0c;n)中&#xff0c;m&#xff0c;n定义域是非负整数(m≤3,n≤10)&#xff0c;函数值定义为&#xff1a; 【输入】 输入m和n。 【输出】 函数值。 【输入样例】 2 3 【输出样例】 9代码实现 #include <stdio.h>/*1163&a…

Docker配置及简单应用

谈论/理解 Docker 的常用核心部分&#xff0c;以下皆在 Ubuntu 操作系统下进行 1 国内源安装 Docker-ce 1.1 配置 Linux 内核流量转发 因为docker和宿主机的端口映射&#xff0c;本质是内核的流量转发功能&#xff0c;所以要对其进行配置 1.1.1 未配置流量转发 如果没有配置流…

前端请求后端php接口跨域 cors问题

只需要后端在网站的入口文件 一般都是 index.php 加上 这几行代码就可以了 具体的参数可以根据需要去修改 header("Access-Control-Allow-Origin: *"); header(Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS); header(Access-Control-Allow-Heade…

Qt(程序打包)

Qt开发的程序最终都是要给用户使用的&#xff0c;用户的电脑上不可能装一个Qt的开发环境导入项目使用。因此项目项目开发完成后需要打包——制作成安装包&#xff0c;用户直接下载并安装即可使用。 1. 设置图标 设置图标的操作步骤如下&#xff1a; 1. 准备好图标文件&#xff…

LLM - 使用 LLaMA-Factory 微调大模型 Qwen2-VL SFT(LoRA) 图像数据集 教程 (2)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/143725947 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 LLaMA-…

HDLBIts习题(3):使用冒号表示位宽时,冒号两端必须是常量

&#xff08;1&#xff09;易错习题1&#xff1a;Circuits - Combinational Logic - Multiplexers - 256-to-1 4bit multiplexer 使用冒号表示位宽时&#xff0c;冒号两端必须是常量&#xff0c;因此如果使用变量&#xff0c;可以使用位拼接的方法。 &#xff08;2&#xff09;…

人工智能助手是否让程序员技能退化?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

shell排序

任务描述 本关任务&#xff1a;实现shell排序算法&#xff0c;void ShellSort(int R[],int N,int d[],int t)。 相关知识 基本思想&#xff1a;对待排记录序列先作“宏观”调整&#xff0c;再作“微观”调整&#xff0c;它是由Donald.L.Shell在1959年提出来的。 所谓“宏观”…

C/C++中的结构体和联合体

c语言中为我们提供了几种基本数据类型&#xff0c;但是在实际编程中&#xff0c;有时候要表达复杂数据关系时&#xff0c;单单使用基本数据类型不能很好的表示&#xff0c;为了解决这种问题&#xff0c;可以自己构建一个结构体数据类型&#xff0c;定义的结构体数据类型与基本数…

MIT 6.S081 Lab1: Xv6 and Unix utilities翻译

Lab1: Xv6 and Unix utilities 文章目录 Lab1: Xv6 and Unix utilities实验任务启动xv6(难度&#xff1a;Easy)sleep(难度&#xff1a;Easy)pingpong&#xff08;难度&#xff1a;Easy&#xff09;Primes(素数&#xff0c;难度&#xff1a;Moderate/Hard)find&#xff08;难度&…

MySQL 如何用C语言连接

✨✨✨励志成为超级技术宅 ✨✨✨ 本文主要讲解在Linux服务器上&#xff0c;如何使用c语言MySQL库的接口来对MySQL数据库进行操作&#xff0c;如果没有服务器安装MySQL&#xff0c;也可以先学学看怎么用c语言mysql库的接口&#xff0c;还是比较容易的了。(●☌◡☌●)。那么开…

雨晨 24H2 Windows 11 IoT ltsc 2024 IE 极简版 26100.2222

文件: 雨晨 24H2 Windows 11 IoT ltsc 2024 IE 极简版 26100.2222 install.wim 大小: 1737837354 字节 修改时间: 2024年11月12日, 星期二, 12:41:56 MD5: 3511B5416EA18DD4AD2D75F133C49E25 SHA1: 817E4DF1F58AA5A584E5D9263F282C1D20533969 CRC32: EB1C1B7B 简述&#xff1a…