Windows下使用VSCode搭建cpp开发环境

Windows下搭建cpp开发环境

  • 1. 下载安装**mingw-w64编译器和cmake**
  • 2. VSCode安装插件
  • 3. 使用VSCode开发cpp程序
    • 3.1 编写单个可执行的cpp程序
    • 3.2 调试单个程序
    • 3.3 多文件编译执行
    • 3.4 使用cmake进行多文件的编译运行

1. 下载安装mingw-w64编译器和cmake

将下载好的文件分别添加到环境变量中

Windows下使用VSCode搭建cpp开发环境_第1张图片
Windows下使用VSCode搭建cpp开发环境_第2张图片

分别输入下列命令查看环境变量是否配置成功

gcc --version

g++ --version

cmake --version

Windows下使用VSCode搭建cpp开发环境_第3张图片

2. VSCode安装插件

安装下面几款插件
Windows下使用VSCode搭建cpp开发环境_第4张图片

3. 使用VSCode开发cpp程序

3.1 编写单个可执行的cpp程序

VSCode是以文件夹为项目单位,例如在demo文件夹下创建一个 main.cpp 程序文件,程序代码如下:

#include 
using namespace std;

int main() {
    for (int i = 0; i < 5; ++i) {
        cout << "hello world" << endl;
    }
    return 0;
}

使用 g++ 命令编译 mian.cppg++ main.cpp -o main ,会在 demo 目录下生成一个名为 mian.exe 的可执行文件;
Windows下使用VSCode搭建cpp开发环境_第5张图片
运行 mian.exe 可执行文件;
Windows下使用VSCode搭建cpp开发环境_第6张图片
每次输入命令来编译然后运行程序的方法比较繁琐,也可以如下图所示操作;
Windows下使用VSCode搭建cpp开发环境_第7张图片Windows下使用VSCode搭建cpp开发环境_第8张图片

生成的 tasks.json 文件内容如下,对该配置文件中的一些字段简单的介绍;

tasks.json 文件中的内容是用来构建程序时进行一系列的操作的描述;

command 是运行 cpp 程序文件的命令;

args 是一个数组形式,指定将传递给 g++ 的命令行参数,这些参数必须按照编译器期望的顺序指定,即数组中参数出现的顺序;其中 ${file} 表示当前打开的文件; ****${fileBasename} 表示当前打开的文件名;${fileBasenameNoExtension} 表示当前打开文件的不带后缀的文件名;${fileDirname} 表示当前打开文件的目录名;

当点击运行按钮时,将读取tasks.json以了解如何构建和运行你的程序;

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "D:\\Application\\mingw64\\bin\\g++.exe", 
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

3.2 调试单个程序

g++ main.cpp -o main 命令生成的是一个可执行文件,不能进行调试;命令 g++ -g mian.cpp -o main_debug 可以生成具有调试信息的可执行文件,即可以进行调试,选项 -g 表示具有调试功能;通过查看文件大小可以知道带有调试信息的文件大小更大。
Windows下使用VSCode搭建cpp开发环境_第9张图片

借助VSCode进行程序调试

选择一个断点,然后如下图所示:
Windows下使用VSCode搭建cpp开发环境_第10张图片Windows下使用VSCode搭建cpp开发环境_第11张图片Windows下使用VSCode搭建cpp开发环境_第12张图片

3.3 多文件编译执行

多个文件如图所示:
Windows下使用VSCode搭建cpp开发环境_第13张图片
swap.h

#ifndef SWAP_H
#define SWAP_H

void swap(int &a, int &b);

#endif

swap.cpp

#include "swap.h"

void swap(int &a, int &b) {
    int temp = a;
    a = b;
    b = temp;
}

main.cpp

#include 
#include "swap.h"
using namespace std;

int main() {
    int a = 10, b = 20;
    cout << "before swap: a = " << a << ", b = " << b << endl;
    swap(a, b);
    cout << "after swap: a = " << a << ", b = " << b << endl;
    return 0;
}

使用g++ 命令编译多文件,g++ main.cpp swap.cpp -o main
Windows下使用VSCode搭建cpp开发环境_第14张图片

当程序文件的数量变多时,使用命令行编译文件将会变得非常低效,接下来介绍使用cmake进行多文件的编译运行和调试;

3.4 使用cmake进行多文件的编译运行

  1. 首先在项目的根目录下创建一个名为 CMakeLists.txt 的文件,然后在 CmakeLists.txt 文件中输入下面内容,构建一个简单 CMake 工程;

    cmake_minimum_required(VERSION 3.17)    # cmake项目要求的cmake的最低版本
    project(demo02)   # 项目名为 demo02
    
    set(CMAKE_CXX_STANDARD 17)   # c++标准
    
    add_executable(main main.cpp swap.h swap.cpp)   # 编译链接的文件名,第一个为最终生成的可执行文件名(不带后缀),后面为待编译链接的文件名,用空格隔开;
    
  2. 在VSCode中配置Cmake项目
    Windows下使用VSCode搭建cpp开发环境_第15张图片
    Windows下使用VSCode搭建cpp开发环境_第16张图片
    Windows下使用VSCode搭建cpp开发环境_第17张图片
    Windows下使用VSCode搭建cpp开发环境_第18张图片
    Windows下使用VSCode搭建cpp开发环境_第19张图片
    Windows下使用VSCode搭建cpp开发环境_第20张图片
    上述构建cmake项目,并通过cmake编译链接cpp程序文件的方法是通过命令行的方式进行的,这样是比较繁琐的,也没能充分利用VSCode插件的便利性。我们肯定是希望只需要在CMakeLists.txt文件中进行简单的修改,然后通过VSCode点击几个简单的按钮就能重新编译链接程序,因此接下来进行相关配置。

  3. 配置 tasks.json 文件

    tasks.json 文件可以配置为运行脚本和启动进程,以便可以在 VS Code 中使用其中许多现有工具,而无需输入命令行或编写新代码。

    options 覆盖cwd(当前工作目录)、env(环境变量)或shell(默认 shell)的默认值。选项可以按任务设置,也可以全局或按平台设置。

    cwd 表示启动VSCode时任务运行器的当前工作目录;

    tasks 表示命令行执行的任务,可以是多个任务的组合;

    label 用户定义任务的标签,根据标签值确定执行哪个任务;

    dependsOn 将更简单的任务组合成任务。

    {
        "options": {
            "cwd": "${workspaceFolder}/build"
        },
        "tasks": [
            {
                "type":"shell",
                "label": "cmake",
                "command": "cmake",
                "args": [
                    ".."
                ]
            },
            {
                "label": "make",
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
                "command": "mingw32-make.exe",
                "args": [
    
                ]
            },
            {
                "label": "Build",
                "dependsOn":[
                    "cmake",
                    "make"
                ]
            }
        ],
        "version": "2.0.0"
    }
    
  4. 配置 launch.json 文件

    launch.json 配置文件,顾名思义,启动程序时读取的配置文件;

    program 指定要调试的程序;

    args 运行调试程序时传递给程序的参数数组;

    miDebuggerPath 运行调试程序的命令;

    preLaunchTask 顾名思义,在执行launch.json文件中的命令时先执行的 task,即 tasks.json 文件中配置的 task,这里为 tasks.json 中 label 值为 Build 的 task。而 label 值为 Build 的 task 又是 label 为 cmake 和 make 的组合 task,即在执行 launch.json 中命令之前,先执行 cmake 和 make 命令。

    {
        // Use IntelliSense to learn about possible attributes.
        // Hover to view descriptions of existing attributes.
        // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
              "name": "C/C++: g++.exe build and debug active file",
              "type": "cppdbg",
              "request": "launch",
              "program": "${workspaceFolder}/build/main.exe",
              "args": [],
              "stopAtEntry": false,
              "cwd": "${workspaceFolder}",
              "environment": [],
              "externalConsole": false,
              "MIMode": "gdb",
              "miDebuggerPath": "D:\\Application\\mingw64\\bin\\gdb.exe",
              "setupCommands": [
                {
                  "description": "Enable pretty-printing for gdb",
                  "text": "-enable-pretty-printing",
                  "ignoreFailures": true
                }
              ],
              "preLaunchTask": "Build"
            }
          ]
    }
    
  5. 在完成上述的配置后,即可使用快捷 ctrl+F5 编译运行程序,或快捷键 F5 调试程序;

你可能感兴趣的:(cpp,vscode,windows,ide)