当前位置: 首页 > news >正文

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中的变量-CSDN博客

http://www.lryc.cn/news/442255.html

相关文章:

  • 7个提升网站分页体验的 CSS 和 JavaScript 代码片段
  • C++——用带有默认参数的函数实现,求两个整数或三个整数中的最大数。
  • 对商品分类系统的若干问题的思考
  • javascript中Number 类型 在实际开发中常用的一些操作方法
  • 部分解决FDTD安装后,matlab指令fopen报错
  • [python3] 处理函数的重试
  • 鸿蒙开发之ArkTS 界面篇 一
  • 嵌入式Linux学习笔记(6)-线程处理、线程同步、线程池(c语言实现)
  • 【HTTP】请求“报头”(Host、Content-Length/Content-Type、User-Agent(简称 UA))
  • 【刷题日记】43. 字符串相乘
  • Verilog学习之旅~
  • linux之mysql安装
  • 单身狗的逆袭之路之开发相亲交友系统
  • 【Spring】IocDI详解(6)
  • Redis系列之底层数据结构SDS
  • 【STM32】esp8266连接wifi
  • 网络运维故障处理
  • C++第十一节课 new和delete
  • 【爱给网-注册安全分析报告-无验证方式导致安全隐患】
  • 苹果为什么不做折叠屏手机?
  • 目标检测经典算法的个人理解
  • FewShotChatMessagePromptTemplate 和 FewShotPromptTemplate区别
  • 《程序猿之设计模式实战 · 策略模式》
  • deepinlinux-v23用deepinunioncode初始c例子
  • 前端框架对比选择:如何在众多技术中找到最适合你的
  • 数据结构—(java)反射,枚举,lambda表达式
  • 机器学习(西瓜书)第 14 章 概率图模型
  • Python异步编程-asyncio详解
  • UniApp如何打包成客户端应用程序
  • 你应该掌握的12条饭局规矩!