【C++】windwos下vscode多文件项目创建、编译、运行

发布于:2024-09-18 ⋅ 阅读:(14) ⋅ 点赞:(0)

🌕vscode多文件项目创建方法

官方给的vscode创建c/c++项目的方法
在这里插入图片描述

🌙具体案例

⭐命令行创建项目名,并在vscode中打开项目

比如要在 C:\Users\123\Desktop\Bruce\C++_Code目录下创建一个职工管理系统项目,名为Employee_Management

进入目标文件夹

cd C:\Users\123\Desktop\Bruce\C++_Code

创建项目Employee_Management

mkdir Employee_Management

在该项目下启动vscode

cd Employee_Management
code .

这样创建的项目会自动生成文件 .vscode
在这里插入图片描述

该目录下会自动生成配置文件 tasks.json

⭐创建include目录和头文件

在Employee_Management项目下创建include文件夹和

在include文件夹下创建workerManager.h头文件

#pragma once
#include<iostream>
using namespace std;

class WorkerManager
{
public:
    //构造函数
    WorkerManager();

    //展示菜单
    void showMenu();

    //析构函数
    ~WorkerManager();

};

⭐创建src目录和cpp文件

#include "workerManager.h"

WorkerManager::WorkerManager()
{


}

void WorkerManager::showMenu()
{
    cout<<"****************************************************"<<endl;
    cout<<"******************0.退出管理程序*********************"<<endl;
    cout<<"******************1.增加职工信息*********************"<<endl;
    cout<<"******************2.显示职工信息*********************"<<endl;
    cout<<"******************3.删除离职员工*********************"<<endl;
    cout<<"******************4.修改职工信息*********************"<<endl;
    cout<<"******************5.查找职工信息*********************"<<endl;
    cout<<"******************6.按照编号排序*********************"<<endl;
    cout<<"******************7.清空所有文档*********************"<<endl;
    cout<<"****************************************************"<<endl;
    //换行
    cout<<endl;
}


WorkerManager::~WorkerManager()
{


}

⭐根目录下创建main.cpp

#include<iostream>
using namespace std;
#include "workerManager.h"

int main()
{
    //声明一个管理系统类
    WorkerManager wm;
    wm.showMenu();
    system("Pause");
    return 0;
}

🌕运行项目失败(找不到include目录下的头文件和src目录下的文件)

🌙修改tasks.josn文件的参数(绝对路径法)

修改.vscode目录下的tasks.json文件

在这里插入图片描述

修改-g后的参数为src下面的workerManager.cpp的绝对路径。
修改-I后面的参数为include目录的绝对路径。
 "-g","${file}","C:\\Users\\X2006600\\Desktop\\Bruce\\C++_Code\\Employee_Management\\src\\workerManager.cpp",
 "-I","C:\\Users\\X2006600\\Desktop\\Bruce\\C++_Code\\Employee_Management\\include",
完整的tasks.json文件
{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "C:\\Users\\X2006600\\Desktop\\MinGW\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g","${file}","C:\\Users\\X2006600\\Desktop\\Bruce\\C++_Code\\Employee_Management\\src\\workerManager.cpp",
                "-I","C:\\Users\\X2006600\\Desktop\\Bruce\\C++_Code\\Employee_Management\\include",
                "-o","${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}
修改之后运行成功。

🌙修改tasks.josn文件的参数(相对路径法)(推荐)

将tasks.json文件的 -g和-I后面的参数改为如下内容:

"-g","${file}","${fileDirname}\\src\\*.cpp",
"-I","${fileDirname}\\include",

这样写之后,转移项目的位置不再需要重新设定-g和-I后的绝对路径。

${fileDirname}:获取当前项目的绝对路径
*.cpp": 通配符,代表所有后缀为.cpp的文件

假如我的项目在C:\Users\123\Desktop\Bruce\C++_Code\Employee_Management路径下,上面的代码在编译时等于如下的代码:

 "-g","${file}","C:\\Users\\123\\Desktop\\Bruce\\C++_Code\\Employee_Management\\src\\*.cpp",
 "-I","C:\\Users\\123\\Desktop\\Bruce\\C++_Code\\Employee_Management\\include",

完整的tasks.json文件如下:

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

🌙原理

g++是通过命令来运行c++项目的。其中:

-g是生成调试信息
-I后面跟头文件的目录
-o是设置编译main.cpp文件后的输出的.exe文件的名称

要运行上面的项目g++命令为:

g++ 
-g C:\\Users\\X2006600\\Desktop\\Bruce\\C++_Code\\Employee_Management\\src\\workerManager.cpp
-I C:\\Users\\X2006600\\Desktop\\Bruce\\C++_Code\\Employee_Management\\include
-o main.cpp
把该命令写到tasks.json对应的位置,因此成功运行该项目。