IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> VScode C/C++环境配置 -> 正文阅读

[开发工具]VScode C/C++环境配置

VScode C/C++环境配置

1、环境准备

C/C++的程序源代码, 经过预处理 --> 编译 --> 汇编 --> 链接 最后得到我们的可执行文件, 这里我们环境需要一个编译器, 这里用的是 GCC, 下载地址为: MinGW-w64下载地址 , 下载解压之后将bin的路径加入环境变量中, 这里的操作可以查看其他文章.

在这里插入图片描述

验证是否安装成功, win + r 输入 cmd, 输入 gcc -v, 查看信息即可。

2、安装 C/C++ 插件

下载这个即可

3、vscode的配置环境

? 一般我们先创建一个工作区目录, 在这个目录下面创建一个.vscode文件夹(注意名字一定是.vscode),这是必须的(一般来说,每个文件夹中都会有这么一个.vscode配置文件)。注意:将此文件夹放在常用文件夹顶层,就不需要重复配置了。 一般常见的目录如下所示

在这里插入图片描述

? 在.vscode文件夹中,新建两个(只需两个)配置文件,即launch.json、tasks.json。在当前文件是C++的情况下,tasks可以被用来做编译,而launch用来执行编译好的文件。

支持下面的预定义变量:

  • ${workspaceFolder} - 当前工作目录(根目录)

  • ${workspaceFolderBasename} - 当前文件的父目录

  • ${file} - 当前打开的文件名(完整路径)

  • ${relativeFile} - 当前根目录到当前打开文件的相对路径(包括文件名)

  • ${relativeFileDirname} - 当前根目录到当前打开文件的相对路径(不包括文件名)

  • ${fileBasename} - 当前打开的文件名(包括扩展名)

  • ${fileBasenameNoExtension} - 当前打开的文件名(不包括扩展名)

  • ${fileDirname} - 当前打开文件的目录

  • ${fileExtname} - 当前打开文件的扩展名

  • ${cwd} - 启动时task工作的目录

  • ${lineNumber} - 当前激活文件所选行

  • ${selectedText} - 当前激活文件中所选择的文本

  • ${execPath} - vscode执行文件所在的目录

  • ${defaultBuildTask} - 默认编译任务(build task)的名字

以上图的文件结构来配置这两个文件的一个具体例子

// tasks.json 文件 
{
    "version": "2.0.0",
    "tasks": [                  // 这里可以放置多个任务, 这里只写了一个 
        {                       // 第一个任务的起始括号 
            "label": "g++",     // 任务的名称, 在launch.json文件中"preLaunchTask" 指定的任务名
            "command": "g++",   // 命令, 即命令行中的命令, 由于我们这个任务是要实现编译cpp,同时我们编译器使用的是g++, 故命令为g++
            "args": [           // commmand 命令带的参数, 熟悉g++编译指令的应该都懂
                "-g",           // 生成调试信息
                "-std=c++11",   // 使用C++11 标准 进行编译  
                "${fileDirname}/*.cpp",  // 指定进行编译的源文件,这里指定了当前执行编译的cpp文件所在目录下的所有cpp文件
                "-o",           // -o 接 最终可执行文件生成的位置      
                "${workspaceFolder}/output/${fileBasenameNoExtension}.exe", // .exe文件的位置
                "-I",           // -I 后续接头文件路径
                "headfile"      // 头文件所在目录 
            ],
            
           // 所以以上部分,就是在shell中执行(假设文件名为main.cpp)
          // g++ src/main.cpp src/test.cpp -g -o output/main.exe -I headfile 
            
            "problemMatcher": {
                "owner": "cpp",
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            },
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}
// launch.json 文件 
{
    "version": "0.2.0",
    "configurations": [

        {
            "name": "(gdb) Launch",     // 配置名称,将会在启动配置的下拉菜单中显示  随便填
            "type": "cppdbg",           // 配置类型,这里只能为cppdbg
            "request": "launch",        // 请求配置类型,可以为launch(启动)或attach(附加)
            "program": "${workspaceFolder}/output/${fileBasenameNoExtension}.exe",  // 将要进行调试的程序的路径
            "args": [],                 // 程序调试时传递给程序的命令行参数,根据程序需要填写 
            "stopAtEntry": false,       // 设为true时程序将暂停在程序入口处,一般设置为false
            "cwd": "${workspaceFolder}",// 调试程序时的工作目录,一般为工程的根目录
            "environment": [],          // 环境变量, 为空即可, 使用系统环境变量 
            "externalConsole": true,    // 调试时是否显示控制台窗口,一般设置为true显示控制台
            "MIMode": "gdb",            // 指定连接的调试器
            "miDebuggerPath": "D:\\MinGW\\mingw64\\bin\\gdb.exe",// miDebugger的路径,注意这里要与MinGw的路径对应
            "preLaunchTask": "g++",     // 调试会话开始前执行的任务,一般为编译程序,名称与tasks.json的label设置的名字对应 
            
            // 模板自带,好像可以更好地显示STL容器的内容
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
} 

根据需求进行修改的参数

(1) “program” 参数 设置调试程序的路径

? 该路径的设置取决于我们最好将我们编译链接得到的可执行文件放在哪里, 以这个例子为例我们将其放到了output的文件夹.

"program": "${workspaceFolder}/output/${fileBasenameNoExtension}.exe"

在这里使用了预定义变量, ${workspaceFolder} 表示的是当前工作目录(根目录), 在这个具体的例子中即test目录, 然后test目录下的一个文件, 文件名字为 ${fileBasenameNoExtension} 即当前打开的文件名, 例如我们最后是在main.cpp这个文件运行的, 那么这个 “program” 参数即为 test/output/main.exe; 这个根据自己的文件结构可以进行修改设置.

(2) “MIMode” 参数 和 “miDebuggerPath”

"MIMode"参数的设置取决于使用的连接器, 一般有gdb 和 lldb, “miDebuggerPath” 为你调试器的具体路径, 如果是以非调试模式运行的, 这两个参数可以不设置.

(3) “preLaunchTask” 预任务
即执行程序之前,最先执行的一个任务, 这里一般为编译任务, 若这里不设置, 则直接去启动.exe, 若此时时"program"的参数设置中并没有这样一个文件则会报错. 这个参数设置为 tasks.json下 tasks 参数中其中一个任务的 label 参数, 例如我们此时的tasks.json下 tasks 只有一个任务, 其中"label": “g++”, 那么我们的"preLaunchTask" 参数即可设置为 “g++”

4、智能补全设置

? 使用VScode,我们都会碰到一个问题,就是在编写C和C++源文件时,头文件提示未配置好等错误。关于这个问题,给出方案如下:我想大家碰到的最多的问题就是"includepath"的设置问题,这里我们需要使用c_cpp_properties.json这个文件来指明我们的头文件路径,

// c_cpp_properties.json 文件
{
    "configurations": [
        {
            "name": "win",                     
            "includePath": [
                "${workspaceFolder}/**",    // 指明了include路径在根目录下
            ],
            "defines": [],
            "compilerPath": "D:/MinGW/mingw64/bin/g++.exe",    // 编译器的路径, 根据需求修改
            "cStandard": "c11",               // 指明C编译标准 
            "cppStandard": "c++17",           // 指明C++编译标准
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

这里以Opencv的头文件更好说明

{
    "configurations": [
        {
            "name": "win",
            "includePath": [                               
                "${workspaceFolder}/**",
                "D:/opencv/opencv/build/include",            
                "D:/opencv/opencv/build/include\\opencv2"    // 根据自己opencv所在地方填写
            ],
            "defines": [],
            "compilerPath": "D:/MinGW/mingw64/bin/g++.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

?

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 08:01:43  更:2021-07-28 08:02:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/22 1:42:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码