• VSCode 环境配置原理


    上篇文章我们讲解了VScode的基本安装,现在我们搭建一个最基础的C++环境(由浅入深)。

    1.首先安装基本插件

    插件名称插件说明
    C/C++IntelliSense, debugging, and code browsing。提供C/C++支持
    Code Runner提供编译后程序的运行环境
    C/C++ Snippets提供一些常用的C/C++片段
    EPITECH C/C++ Headers为C/C++文件添加头部(包括作者、创建和修改日期等),并为.h头文件添加防重复的宏
    File Templates文件模板,可以自己添加文件模板
    GBKtoUTF8GBK编码文件转换为UTF-8
    Include Autocomplete头文件自动补全
    One Dark Pro可以打造好看的VS Code主题

    VSCode运行原理:

    先执行任务生成可执行文件,然后在调试程序。即:task.json —>launch.json

    配置任务

    task.json的生成:终端->配置任务,此时默认的task.json将生成。由于我们选择的g++的编译环境,所以我们选择g++。

    task.json:启动进程前需要执行的任务(例如g++编译程序生成可执行文件)。可以创建多个task,选择一个标记为默认值。

    在这里插入图片描述

    {
    	"version": "2.0.0",
    	"tasks": [
    		{
    			"type": "cppbuild",
    			//task的任务标签,当执行任务的时候展示的标题
    			"label": "C/C++: g++ 生成活动文件",
    			//执行命令的程序,这里是g++
    			"command": "/usr/bin/g++",
    			//g++的命令参数
    			"args": [
    				"-fdiagnostics-color=always",
    				"-g",
    				//需要编译的文件,所以执行任务的时候需要选中main.cpp
    				"${file}",
    				"-o",
    				//${fileDirname}文件所在目录,${fileBasenameNoExtension}文件名,不包括后缀
    				"${fileDirname}/${fileBasenameNoExtension}"
    			],
    			//上述代码翻译成g++命令
    			///usr/bin/g++ -fdiagnostics-color=always -g /home/jefcat/work/vscodedemo/main.cpp -o /home/jefcat/work/vscodedemo/main
    			
    			"options": {
    				"cwd": "${fileDirname}"
    			},
    			"problemMatcher": [
    				"$gcc"
    			],
    			"group": {
    				"kind": "build",
    				//是否为默认任务
    				"isDefault": true
    			},
    			"detail": "编译器: /usr/bin/g++"
    		}
    	]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    运行任务:终端->运行任务。 此时就可以编译并且生成执行文件main
    在这里插入图片描述

    NOTE:运行任务的时候一定要选中main.cpp,因为g++执行命令里面有指定编译文件。此处我们仅仅展示原理demo,只有一个文件,实际肯定是多文件,所以task.json需要自己根据需求配置。这里仅仅作为原理入门。

    运行调试程序

    launch.json:用于设置调试和运行,用来执行编译好的文件,默认就会生成launch.json。如果没有的话可以通过:运行->打开/添加配置生成launch.json。

    {
      "version": "0.2.0",
      "configurations": [
        {
        //调试或者运行前需要执行的任务。和taskjson的label想对应。
          "preLaunchTask": "C/C++: g++ 生成活动文件",
          "name": "C/C++ Runner: Debug Session",
          "type": "cppdbg",
          "request": "launch",
          "args": [
            ""
          ],
          "stopAtEntry": false,
    		
    	   //指定工作目录
          //"cwd": "/home/jefcat/work/vscodedemo",
          "cwd": "${fileDirname}"
          "environment": [],
          //指定运行程序,屏蔽部分都是模板默认生成的,所以我们需要修改一下。
          //"program": "/home/jefcat/work/vscodedemo/build/Debug/outDebug",
          "program": "${fileDirname}/${fileBasenameNoExtension}",
          "internalConsoleOptions": "openOnSessionStart",
          "MIMode": "gdb",
          "miDebuggerPath": "/usr/bin/gdb",
          "externalConsole": false,
          "setupCommands": [
            {
              "description": "Enable pretty-printing for gdb",
              "text": "-enable-pretty-printing",
              "ignoreFailures": true
            }
          ]
        }
      ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    此时最重要的就是program标签,这里需要指定通过task生成的目标文件。不能直接使用模板的,否则会提示找不到执行文件或者非执行文件。下面是launch.json的关键字说明

    关键字说明
    preLaunchTask执行调试前 要完成的任务。该值需要与tasks.json中的label想对应
    externalConsole调试是否显示控制台。如果需要输入东西,最好修改为true使用外部控制台(在运行时额外打开终端)。否则用vscode内置的控制台不能输入东西
    type配置类型。不能改
    program调试程序所在路径和程序名
    stopAtEntry为true时程序暂停在程序入口,一般填false
    cwd程序的工作目录
    miDebuggerPath调试器路径,Windows下后缀不能省略

    此时通过F5就可以调试程序,F9打断点了。
    在这里插入图片描述

    基本调试步骤:运行任务==》调试程序,但是我们往往是F5直接调试程序,所以我们就需要指定运行前需要执行的任务,即配置preLaunchTask字段。此时F5就可以实现一键编译和调试了。

    后面我们会讲解一键配置C/C++多个C及CPP文件编译

    VSCode 常见的变量列表

    your-project:为打开的文件夹

    变量说明
    ${userHome}/home/your-username
    ${workspaceFolder}/home/your-username/your-project
    ${workspaceFolderBasename}your-project
    ${file}/home/your-username/your-project/folder/file.ext
    ${fileWorkspaceFolder}/home/your-username/your-project
    ${relativeFile}folder/file.ext
    ${relativeFileDirname}folder
    ${fileBasename}file.ext
    ${fileBasenameNoExtension}file
    ${fileDirname}/home/your-username/your-project/folder
    ${fileExtname}.ext
    ${lineNumber}line number of the cursor
    ${selectedText}text selected in your code editor
    ${execPath}location of Code.exe
    ${pathSeparator}/ on macOS or linux, \ on Windows
  • 相关阅读:
    生产环境 /dev/vda1文件满了导致redis无法写入问题分析 以及df -h解析
    带背景音乐的css3桃子桃花背景
    ES6 数组转为对象 ,以及 find 在数组里面找到对应一条数据
    简单工厂模式
    2023秋招笔试算法Python3题解
    认识计算机-JavaEE初阶
    Educational Codeforces Round 136 (Rated for Div. 2)(A~D)
    【浅学Java】Bean的作用域和生命周期
    【无标题】
    【Spring 源码】AOP 的加载原理(二)
  • 原文地址:https://blog.csdn.net/CAir2/article/details/125893620