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

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

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

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

main.cpp

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

sum.h

cpp 复制代码
#ifndef SUM_HEADER
#define SUM_HEADER
int sum(int a,int b);
#endif

sum.cpp

cpp 复制代码
#include"sum.h"
int sum(int a,int b)
{
    return a+b;
}

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

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

cpp 复制代码
{
    "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.cpp和sum.h。

代码就是下面这样

cpp 复制代码
{
    "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一样。

相关推荐
云泽8082 小时前
从零搭建 WSL2 + Ubuntu C/C++ 开发环境:原理、实践与底层架构解析
linux·c++·windows·ubuntu·wsl2
初願致夕霞9 小时前
C++11:类型推导与完美转发复盘笔记
c++
小猪写代码9 小时前
C++中什么是类,什么是对象
c++
Navigator_Z11 小时前
LeetCode //MySQL - 1251. Average Selling Price
c语言·算法·leetcode
YCOSA202511 小时前
雨晨 Windows 10 企业版 LTSC x64 中度精简 1809 迎双节 17763.9257 特别版
windows
sukalot11 小时前
windows 驱动实例分析系列: HidHide 驱动分析 - drivers 篇(四)
windows·驱动开发
君顾112 小时前
上海24小时自助健身房系统开发实战指南:从架构设计到落地部署
java·开发语言·健身房
Escalating_xu12 小时前
【C语言数据类型和变量·上】从内置类型到变量模型:一次讲透 sizeof、signed/unsigned 与作用域
c语言
香菜TTT12 小时前
大模型上下文协议(MCP):AI 应用的“USB-C”接口技术
开发语言·人工智能·经验分享
钓鱼的肝13 小时前
梳理(1-5)
c++·经验分享·笔记·算法·青少年编程