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

news2024/11/18 23:46:11

        实际上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.coloradmin.cn/o/1991278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

洛谷 B2145 digit 函数 B2146 Hermite 多项式 题解

题目目录&#xff1a; No.1 B2145 digit 函数 No.2 B2146 Hermite 多项式 OK&#xff0c;开始正文&#xff01; 第一题&#xff1a;B2145 digit 函数 题目描述 在程序中定义一函数 digit(n,k)&#xff0c;它能分离出整数 n 从右边数第 k 个数字。 输入格式 正整数 n …

Topsis法模型(评价类问题)

目录 本文章内容参考&#xff1a; 一. 概念 二. 特点和适用范围 三. 实现步骤 四. 代码实现 本文章内容参考&#xff1a; TOPSIS法模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北_哔哩哔哩_bilibili 一. 概念 TOPSIS&#xff08;Technique for Or…

让EHS管理更智能,一起来看物联网如何重塑企业EHS管理

随着信息技术的飞速发展&#xff0c;物联网&#xff08;IoT&#xff09;技术正逐步渗透到企业管理的各个领域&#xff0c;特别是在环境、健康与安全&#xff08;EHS&#xff09;管理方面&#xff0c;物联网技术展现出了巨大的潜力和价值。 一、物联网技术在EHS管理中的应用场景…

达梦数据库 逻辑备份还原

达梦的逻辑备份还原 1.背景2.要求3.实验步骤3.1 相关术语3.2 dexp逻辑导出3.2.1 使用dexp工具3.2.2 dexp相关参数含义3.2.3 四种级别导出3.2.3.1 FULL3.2.3.2 OWNER3.2.3.3 SCHEMAS3.2.3.4 TABLES 3.2.4 使用范例3.2.4.1 环境准备3.2.4.2 dexp逻辑导出 3.3 dimp逻辑导入3.3.1 使…

【大模型从入门到精通10】openAI API 提示链的力量1

这里写目录标题 提示链的力量核心概念理解提示链用于清晰说明的类比 实际应用与益处工作流程管理成本效率错误减少动态信息加载 方法学步骤式方法最佳实践 示例设置环境从用户查询中提取相关信息获取详细产品信息 提示链的力量 核心概念 理解提示链 提示链涉及将复杂任务分解…

C++速学day2

xia复习 上一天的学习内容&#xff1a; 重点&#xff1a;1、封装———— 就是对类的抽象 &#xff0c;将一种对象的共性 抽象成一个类。 2、三个函数——-构造函数/复制构造函数/析构函数 注意&#xff1a;析构函数和构造函数的调用顺序刚好相反。 新内容 两个类的关系 …

巨能涨!用AI做沙雕日常图文号,闭眼出大爆款!接个软广3000+!

家人们&#xff01;最近圈子陆续整理了一波在小红书上&#xff0c;适合植入软广的AI小红书商单玩法案例&#xff0c;例如&#xff1a;AI美女博主账号、AI养生博主账号、AI治愈插画Vlog短视频账号等等&#xff0c;接下来也会持续输出更多高价值的软广案例玩法。 今天刚好在刷小…

【python】PyQt5中QButtonGroup的详细用法解析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

正点原子imx6ull-mini-Linux驱动之Linux 网络驱动实验

网络驱动是 linux 里面驱动三巨头之一&#xff0c;linux 下的网络功能非常强大&#xff0c;嵌入式 linux 中也常 常用到网络功能。前面我们已经讲过了字符设备驱动和块设备驱动&#xff0c;本章我们就来学习一下 linux 里面的网络设备驱动。 1&#xff1a;嵌入式网络简介 1.1…

Pandas中高效的“For循环”

循环是我们编程技能中的一项固有技能。当我们熟悉任何编程语言时&#xff0c;循环就会成为一个基本的、易于解释的概念。 在这篇博文中&#xff0c;我们将探索遍历pandas dataframe的各种方法&#xff0c;检查每个循环方法的相关运行时。为了验证循环的有效性&#xff0c;我们…

3D开发工具HOOPS如何实现数字孪生高效的模型设计和分析?

数字孪生技术通过创建物理对象或系统的虚拟模型&#xff0c;实时反映其状态和行为&#xff0c;从而实现监控、优化和预测。这一技术在智能制造、建筑、城市规划等领域有着广泛应用。HOOPS SDK作为一套功能强大的软件开发工具包&#xff0c;为数字孪生技术的实现提供了全面支持。…

【启明智显分享】烹饪机HMI超值之选:个位数价工业级芯片Model3C点亮4.3寸触摸彩屏

一、方案背景 在快节奏的现代生活中&#xff0c;人们对于美食的追求从未停止&#xff0c;但繁琐的烹饪过程却常常让人望而却步。为了满足人们既能轻松享受美味又能节省时间和精力的需求&#xff0c;自动烹饪机应运而生。目前&#xff0c;自动烹饪机发展也越来越成熟&#xff0…

数据结构 - 哈希表

文章目录 前言一、哈希思想二、哈希表概念三、哈希函数1、哈希函数设计原则2、常用的哈希函数 四、哈希冲突1、什么是哈希冲突2、解决哈希冲突闭散列开散列 五、哈希表的性能分析时间复杂度分析空间复杂度分析 前言 一、哈希思想 哈希思想&#xff08;Hashing&#xff09;是计…

振动分析-18-基于振动分析进行故障诊断的思路和步骤

参考树立正确的振动诊断思路 参考振动分析相关知识的储备及振动分析仪的局限性 参考如何进行振动分析诊断(译文) 1 正确的故障诊断意识 我们通常在学习班听到的是大学教授以及专家讲解的故障诊断的基础理论,对于刚接触这个专业的人来说,微分方程和复杂的矩阵却有点让人忘…

数据库篇--八股文学习第十六天| MySQL的执行引擎有哪些?;MySQL为什么使用B+树来作索引;说一下索引失效的场景?

1、MySQL的执行引擎有哪些&#xff1f; 答&#xff1a; MySQL的执行引擎主要负责查询的执行和数据的存储, 其执行引擎主要有MyISAM、InnoDB、Memery 等。 InnoDB引擎提供了对事务ACID的支持&#xff0c;还提供了行级锁和外键的约束&#xff0c;是目前MySQL的默认存储引擎&…

227还原实战(三)

调转符号 为了方便后面处理 &#xff0c;我们先将所有的 二项表达式 进行预处理&#xff0c;将标识符放在左边&#xff0c; 数字放在右边&#xff0c; 比较简单&#xff0c;不多解释 转换逗号表达式 这里还原逗号表达式就要简单很多&#xff0c;主要是还原三元外的逗号表达式…

Agent知识库:功能、原理浅析

随着LLM不断发展&#xff0c;基于LLM的Agent今年来十分火热。Agent知识库不仅可以存储大量的信息&#xff0c;还包含了丰富的规则、算法和模型&#xff0c;是Agent实现智能化决策和行动的关键。本文将介绍Agent知识库的功能、原理以及相关落地应用。 概览 能力 1.Knowledge&a…

UDP端口可达性检测(端口扫描)工具开发

UDP端口可达性检测(端口扫描)工具开发 1、应用场景分析 主机X与主机Y部署在AB双网环境下&#xff0c;两个主机间通过UDP协议进行数据交互。应用程序发送数据时&#xff0c;优先使用A网发送数据&#xff0c;如果A网异常则通过B网发送数据。两个主机应用间没有设置心跳帧 &…

Vue 3+Vite+Eectron从入门到实战系列之(四)一Electron热身运动(二)

在electron里面能不呢实现暗黑模式和明亮模式的切换&#xff1f;我们怎么读取主进程里面的数据和系统数据。这篇就是来实现这几个效果的 实现效果 更改系统的主题色 在 App.vue 中添加代码。 <el-button type"warning" click"changeTheme">更改系…

Python 进行反射和元编程

反射和元编程是Python中两种强大且高级的编程技术。反射允许程序在运行时检查和修改自身结构和行为&#xff0c;而元编程则是编写可以操作其他代码的代码&#xff0c;通常通过使用元类、装饰器等技术来实现。 1. 反射 反射是指程序在运行时检查和操作自身结构的能力。Python通…