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文件

#include "iostream"
using namespace std;
class sample
{
private:
    /* data */
public:
    sample(/* args */);
    ~sample();
    string getClassName();
};

sample.cpp文件

#include "sample.h"

sample::sample()
{
}

sample::~sample()
{
}

string sample::getClassName()
{
    return "Sample";
}

 main.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键的值,具体参考如下:

{
	"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中的变量-优快云博客

### 配置 VSCode 进行 C++ 多文件项目开发 #### 创建工作区结构 为了有效地管理多个源文件,在创建项目时建议采用清晰的工作空间布局。通常情况下,一个多文件C++程序会有一个根目录,其中包含`src`, `include` 其他必要的子文件夹来分别存储实现代码头文件[^1]。 #### 安装扩展插件 确保安装了 Microsoft 提供的官方 C/C++ 扩展包,这提供了 IntelliSense 支持以及用于构建调试的任务定义模板[^2]。 #### 设置编译器路径 通过修改 `.vscode/settings.json` 文件中的 `"cpp.standard"` 属性指定使用的标准版本,并且确认已正确设置了 GCC 或 Clang 编译器的位置。对于 MinGW 用户来说,可能需要指明像这样的环境变量:"mingw-w64.location"[^3]。 #### 构建任务配置 编辑位于`.vscode/tasks.json` 的 JSON 对象以描述如何调用 g++ 来编译整个工程。下面是一个简单的例子: ```json { "version": "2.0.0", "tasks": [ { "label": "build hello world", "type": "shell", "command": "g++", "args": [ "-g", "${workspaceFolder}/src/*.cpp", "-o", "${workspaceFolder}/bin/hello" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"], "detail": "Generated task to build the project." } ] } ``` 此脚本将会把 src 目录下的所有 .cpp 文件一起编译成名为 'hello' 的可执行文件并放置于 bin 子目录下[^4]。 #### 调试配置 最后一步是在 `.vscode/launch.json` 中设定启动配置以便能够方便地运行测试应用程序。这里给出一个基本的例子: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/bin/hello", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": true, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "build hello world", "miDebuggerPath": "/usr/bin/gdb", "logging": {"trace":true,"traceResponse":true}, "internalConsoleOptions": "openOnSessionStart" } ] } ``` 这段配置告诉 Visual Studio Code 使用 GDB 作为调试工具链,并自动先执行之前提到过的预设任务 (即编译过程),然后再加载生成的目标二进制文件进行单步跟踪等操作[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一直在找资料的菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值