VSCode创建C++项目和编译多文件

前言

在刚安装好VSCode后,我简单尝试了仅main.cpp单文件编译代码,没有问题,但是当我尝试多文件编译时,就出现了无法识别cpp文件。

内容

创建项目

  1. 首先点击左上角"文件";
  2. 在菜单中选择"打开文件夹";
  3. 在文件夹中右键,添加文件,并命名为main.cpp;
  4. ctrl+shift+p,进入命令模式
  5. 输入 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文件中的变量

VSCode C++ Tasks.json中的变量-CSDN博客

相关推荐
山登绝顶我为峰 3(^v^)336 分钟前
如何录制带备注的演示文稿(LaTex Beamer + Pympress)
c++·线性代数·算法·计算机·密码学·音视频·latex
十五年专注C++开发3 小时前
CMake基础:条件判断详解
c++·跨平台·cmake·自动化编译
QuantumStack6 小时前
【C++ 真题】P1104 生日
开发语言·c++·算法
hero_heart6 小时前
vscode中c_cpp_properities.cpp文件生成和作用
ide·vscode·编辑器
天若有情6736 小时前
01_软件卓越之道:功能性与需求满足
c++·软件工程·软件
whoarethenext6 小时前
使用 C++/OpenCV 和 MFCC 构建双重认证智能门禁系统
开发语言·c++·opencv·mfcc
Jay_5157 小时前
C++多态与虚函数详解:从入门到精通
开发语言·c++
xiaolang_8616_wjl8 小时前
c++文字游戏_闯关打怪
开发语言·数据结构·c++·算法·c++20
FrostedLotus·霜莲8 小时前
C++主流编辑器特点比较
开发语言·c++·编辑器
DO ITNOW12 小时前
Cursor/VScode ,点击运行按钮,就打开新的终端,如何设置为在当前终端运行文件而不是重新打开终端----一招搞定篇
ide·vscode·编辑器