前言
在刚安装好VSCode后,我简单尝试了仅main.cpp单文件编译代码,没有问题,但是当我尝试多文件编译时,就出现了无法识别cpp文件。
内容
创建项目
- 首先点击左上角"文件";
- 在菜单中选择"打开文件夹";
- 在文件夹中右键,添加文件,并命名为main.cpp;
- ctrl+shift+p,进入命令模式
- 输入 task,在弹出的菜单中选择任务:配置默认生成任务
生成文件:tasks.json
6.ctrl+shift+b,项目进行编译
生成文件 main.exe (可执行文件)
我们可以在资源管理器中直接双击main.exe进行执行;也可以在VSCode的终端中使用命令去执行;
多文件编译
在上述创建的项目中,如果我们新建一个sample.h和一个sample.cpp文件:
sample.h文件
cpp
#include "iostream"
using namespace std;
class sample
{
private:
/* data */
public:
sample(/* args */);
~sample();
string getClassName();
};
sample.cpp文件
cpp
#include "sample.h"
sample::sample()
{
}
sample::~sample()
{
}
string sample::getClassName()
{
return "Sample";
}
main.cpp文件
cpp
#include "iostream"
#include "sample.h"
int main()
{
sample s;
cout<<s.getClassName()<<endl;
return 0;
}
我们再次使用刚刚的方式进行编译: ctrl+shift+b
可以看见项目编译失败,程序生成失败;
问题出在tasks.json文件中,由任务:配置默认生成任务生成的tasks文件是不支持编译多个文件的。我们需要修改该文件的一些地方;
修改tasks文件
我们来看tssks.json文件的内容,如果有在linux系统平台上使用gcc编译过c文件的朋友能够看出来,在args键中的内容就是一个编译命令;
回归tasks文件内容上,我们需要修改argsj键的值,具体参考如下:
cpp
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "D:/mingw/mingw64/bin/g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${workspaceFolder}\\*.cpp",
"-I",
"${workspaceFolder}",
"-o",
"${workspaceFolder}\\${workspaceFolderBasename}.exe"
],
"options": {
"cwd": "D:/mingw/mingw64/bin"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "编译器: D:/mingw/mingw64/bin/g++.exe"
}
]
}
建议去了解一下VSCode 的tasks 文件和类似${workspaceFolder}的意思
下文讲解了Tasks.json文件中的变量