原理还是运行g++命令
一、创建任务
由于这项功能可能在各个工作区使用,所以我们创建用户任务。
ctrl+shift+p,搜索打开用户任务,点击,然后点击others,会打开一个tasks.json文件。
文件内容可参考如下:(此任务功能是编译当前文件的根目录下所有扩展名为cpp的文件)
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "cpp多文件编译",
"type": "shell",
"command": "cd ${fileDirname} ; g++ ./*.cpp -o ${fileBasenameNoExtension} ; ${fileDirname}\\${fileBasenameNoExtension}",
"problemMatcher": [
"$gcc"
]
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "shared",
"showReuseMessage": true,
"clear": false
}
}
]
}
上述代码第9行的分号“;”是分割所要执行的几个命令。
本来写的是“&&”,但报错:标记“&&”不是此版本中的有效语句分隔符。
原因是:vscode默认终端使用powershell,其使用分号“;”分割,而非“&&”。而cmd支持“&&”,把终端换成cmd也可以解决此问题。
如果用这一个任务实现c和cpp两种的编译,可以将第9行修改为如下:(加了字符串“./*.c”)
"command": "cd ${fileDirname} ; g++ ./*.cpp ./*.c -o ${fileBasenameNoExtension} ; ${fileDirname}\\${fileBasenameNoExtension}",
但这样写的话,在运行任务时,如果是在编译c文件,会报错:(因为当前目录下没有cpp文件)
error: ./*.cpp: Invalid argument
虽然报错,不过影响文件的编译和执行,程序该输出的也会正常输出。
不报错的解决办法暂时没找到。