VSCode中如何同时编译多个文件

一、launch和tash到底在干啥

还没配好环境的同学参考vscode配置C++自己下载下g++。先重新把两个json摆在这


//task.json
{
    "version": "2.0.0",
    "tasks": [
      {
        "label": "build",
        "type": "shell",
        "command": "g++",
        "args": [
          "-finput-charset=UTF-8",
          "-fexec-charset=UTF-8",
          "-g",
          "${file}",
          "-o",
          "${fileDirname}/${fileBasenameNoExtension}"
        ],
        "group": {
          "kind": "build",
          "isDefault": true
        },
        "problemMatcher": "$gcc"
      }
    ]
  }

//launch.json
{
    // 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": "g++.exe - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\Programming\\MinGW-w64\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++.exe 生成活动文件"
        }
    ]
}

首先我要告诉大家的是编译和调试是两个步骤,实际上点左上角的按钮只会进行调试的,之所以大家可以在电脑上一键编译调试程序是因为我在launch.json中加了这样一句:

"preLaunchTask": "build"

这一句的作用是啥呢,就是在执行launch之前提前执行执行一个叫build的任务(就是我写的task.json里面的那个),这个任务执行完之后就会生成可执行文件(就是xx.exe),随后vscode就会对生成的这个文件进行调试(但是这个也是我配置的)launch.json里面有这样一个program的变量指明了要调试的对象

    "program": "${workspaceFolder}/${fileBasenameNoExtension}",

这一行指明了要调试的是哪个文件,其中的${workspaceFolder}就是一个环境变量,代表的意识就是你vscode打开的那个文件夹,它后面那个就是当前打开的文件不带后缀剩下的字符串,环境变量这里不展开,不是很常用,如果不是为了通用性了解这几个就够了,launch里面其他的变量含义可以看这个其他变量,这个json文件的意思就比较明了了,用miDebuggerPath里面提到的gdb程序(如果你电脑上的环境变量配好了可以不用指定具体路径,严重就是直接在命令行敲gdb -v,有对应的版本信息出来就ok)
所以如果有现成的exe文件,其实是可以直接修改launch在vscode里面直接调试,那么重点就是如何生成这个exe文件

二、如何不用task生成exe文件

不用task.json 也是可以直接生成exe文件的,但是需要在命令行(就是win+R再敲cmd中叫出来的那个,对应vscode里面的终端)中用g++程序自己去编译,假如我有一个这样的文件夹,里面是我写的一些程序,如何编译呢,直接在终端用相对路径去敲就好
在这里插入图片描述

g++ -g  .\list\class.cpp .\main.cpp -I .\list\class.h -o example.exe

在这里插入图片描述
这样我们就自己通过g++生成了一个示范程序

接下来直接在launch中指定这个程序为调试程序就好(记得删除prelaunch那一行),那么我们看看这一个指令到底在干啥,其实很好理解,参考这个g++参数概览,指定了两个cpp文件作为编译对象(main.cpp ,list/class.cpp,可以用tab键自动补全),指定了一个.h头文件(实际上-I只是需要一个头文件所在的目录就可以了),指定了一个输出文件,这样就很简单就完成了一次编译活动。
这里可以自学一下正则表达式,或者直接记住*.cpp这种表示的就是所有的以.cpp为后缀的文件

三、如何修改task.json以使自己不用天天改

让我们回过头来看看task,其实只需要简单修改一下args里面的参数就可以继续一键调试了,比如我刚才的文件,对应这样的task.json即可,(注意如果是反斜杠需要些\,这两种方式都可以)

//其他的忽略
 "args": [
          "-g",
          "${file}",
          "${fileDirname}/list/*",
          "-I","${fileDirname}/list",
          "-o",
          "${fileDirname}/${fileBasenameNoExtension}"
        ],

比较特殊的是有些同学的电脑上-g那一块的参数必须要把文件的后缀指定为.cpp,这个稍微注意下就好,实在不行就把绝对路径打上去即可,相对和绝对路径的知识看这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值