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

VSCode编译多个不同文件夹下的C++文件

        实际上VSCode编译C++文件就是通过向g++传递参数实现的,因此即使是不同包下面的cpp文件或者.h文件都是可以通过修改g++的编译参数实现,而在VSCode中,task.json文件其实就是在配置g++的编译参数,因此我们可以通过修改task.json里面的参数,实现不同包下cpp文件的编译。

        首先打开一个空的文件夹,然后新建一个main.cpp文件,和一个mycpp文件夹。

mycpp文件夹里面创建sum.cppsum.h文件。 

 

 main.cpp

#include<iostream>
#include"mycpp/sum.h"
using namespace std;
int main()
{cout<<sum(1,3);
}

sum.h

#ifndef SUM_HEADER
#define SUM_HEADER
int sum(int a,int b);
#endif

sum.cpp 

#include"sum.h"
int sum(int a,int b)
{return a+b;
}

运行直接报错,找不到sum函数的定义。 

这时候task.json是下面这样的

{"tasks": [{"type": "cppbuild","label": "C/C++: g++.exe 生成活动文件","command": "F:\\FrameWork\\mingw64\\bin\\g++","args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "调试器生成的任务。"}],"version": "2.0.0"
}

 只需要改变args里面的参数就可以了,fileDirname就是CPPTEST2这个文件夹,第一个"${fileDirname}\\*.cpp",用来编译main.cpp,第二个 "${fileDirname}\\mycpp\\*.cpp"用来编译sum.cppsum.h

代码就是下面这样

{"tasks": [{"type": "cppbuild","label": "C/C++: g++.exe 生成活动文件","command": "F:\\FrameWork\\mingw64\\bin\\g++","args": ["-fdiagnostics-color=always","-g","${fileDirname}\\*.cpp","${fileDirname}\\mycpp\\*.cpp","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "调试器生成的任务。"}],"version": "2.0.0"
}

切换到main函数,再次运行代码,成功打印出4。

大家要是用过g++直接编译文件,就可以相当容易理解这种方式了,比如下面这种,同样可以编译多个不同文件下的cpp文件,并且运行效果和VSCode一样。

 

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

相关文章:

  • 【安卓】连接真机和使用通知
  • CSS3下拉菜单实现
  • Mysql8.3.0排序导致分页数据错乱
  • 漏洞复现-Cacti命令执行漏洞 (CVE-2022-46169)
  • 【Ajax使用说明】Ajax、Axios以及跨域
  • IIS网站搬家工具WebDeploy(把网站迁移去另一台服务器)
  • SQL Server 2022的游标
  • 「11月·香港」第三届人工智能、人机交互和机器人国际学术会议(AIHCIR 2024)
  • 【redis】springboot 用redis stream实现MQ消息队列 考虑异常ack重试场景
  • 初识IDEA
  • zigbee笔记:十、ZStack(2.3.0-1.4.0)的OSAL使用分析
  • SpringBoot响应式编程(1)Reactor核心
  • Java后端处理前端字符串与 JSON 数据:安全拼接与转义技巧
  • 一文搞懂bfs,dfs和高级图算法
  • 【Rust光年纪】Rust异步编程利器:异步DNS、高性能Web服务器一网打尽
  • 04学生管理系统(栈)
  • 我们如何在centos上部署批量管理工具ansible
  • 如何评估前端代码审查培训计划的有效性?
  • 使用nvm切换Node.js版本
  • x264 编码器 PSNR算法源码分析
  • 开源web版3D展示工具Online3DViewer
  • 白骑士的Matlab教学实战项目篇 4.2 信号与图像处理项目
  • 复现、并改进open-mmlab的mmpose详细细节
  • 编写兼容Python2.x与3.x代码
  • 比特币8.12学习问题
  • 解析 Vue 中的app.version、 app.provide 与 app.runWithContext :原理、应用与实例剖析
  • Ubuntu server 命令行跑selenium
  • 刚刚,模糊测试平台SFuzz受到行业认可
  • 数据结构与算法——DFS(深度优先搜索)
  • 基于lambda简化设计模式