g++/make: C++程序文件组织模版

本文介绍了一种在没有集成开发环境的情况下构建C++程序的方法。通过使用g++进行编译并结合Makefile实现自动化构建流程。文章提供了具体的文件结构、Makefile配置及源代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文为C++程序在不使用IDE情况下,自己组织文件结构的模版;
用g++完成编译和连接过程,make来帮助完成一些自动化过程。

一. 文件结构

  1. 文件结构:

    文件结构

  2. 文件内容:

    见附录。

二. g++与make指令

在同级目录下添加makefile文件,编辑内容如下:

#makefile create main
main:main.o testA.o testB.o testC.o
    g++ -o main testA.o testB.o testC.o main.o -lstdc++
testA.o:testA.cpp
    g++ -Wall -c testA.cpp -o testA.o
testB.o:testB.cpp
    g++ -Wall -c testB.cpp -o testB.o
testC.o:./C_dir/testc.cpp
    g++ -Wall -c ./C_dir/testc.cpp -o testC.o
main.o: main.cpp
    g++ -Wall -c main.cpp -o main.o
clean:
    rm -rf testA.o testB.o testC.o main.o

进入终端,cd到文件目录下,执行make main指令:

> cd ~/Workspace/CppEcample/
> make main

就会在当前目录下生成可执行文件main,以及中间过程产生的*.o文件。如果想统一删除这些.o文件,执行如下指令。

> make clean

附录

各文件内容:

main.cpp:

#include "testA.h"
#include "testB.h"
#include "./c_dir/testC.h"

#include <iostream>

int main(void)
{
    classA cA;
    classB cB;
    classC cC;

    cA.set_data(10);
    cB.set_data(20);
    cB.set_data(30);

    cA.show_data();
    cB.show_data();
    cC.show_data();

    return 0;
}

testA.h:

#ifndef _testA_h_
#define _testA_h_

#include <iostream>

class classA
{
private:
    int dataA;
public:
    void set_data(int data);
    void show_data(void);
};


#endif

testA.cpp:

#include "testA.h"

void classA:: set_data(int data)
{
    dataA=data;
}

void classA:: show_data(void)
{
    std::cout<<"data of classA is"<<dataA<<std::endl;
}

testB.h:

#ifndef _testB_h_
#define _testB_h_

#include <iostream>

class classB
{
private:
    int dataB;
public:
    void set_data(int data);
    void show_data(void);
};


#endif

testB.cpp

#include "testB.h"

void classB:: set_data(int data)
{
    dataB=data;
}

void classB:: show_data(void)
{
    std::cout<<"data of classB is"<<dataB<<std::endl;
}

C_dir/testC.h

#ifndef _testC_h_
#define _testC_h_

#include <iostream>

class classC
{
private:
    int dataC;
public:
    void set_data(int data);
    void show_data(void);
};


#endif

C_dir.testC.cpp:

#include "testC.h"

void classC:: set_data(int data)
{
    dataC=data;
}

void classC:: show_data(void)
{
    std::cout<<"data of classC is"<<dataC<<std::endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值