C++简单类中如何书写Makefile(一)

本文通过一个简单的计算器程序实例,详细介绍了如何使用Makefile来构建项目。包括定义目标文件、依赖关系及编译命令等基本要素。

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

最近学习设计模式的时候,开始用起来Makefile,关于Makefile过多的介绍就不多说了。今天讲述的就是一个基本的类,如何使用Makefile。
我们一共有以下几个文件:add.cpp add.h base.cpp base.h context.cpp context.h main.cpp Makefile

直接上代码:
1.类COperation : base.h / .cpp

// base.h
#ifndef base_h
#define base_h

class COperation
{
public:
    int m_nFirst;
    int m_nSecond;

    virtual double GetResult();
};
#endif

// base.cpp 
#include "base.h"

double COperation::GetResult()
{
    double dResult=0;
    return dResult;
}

2.类 AddOperation :

// add.h
#include "base.h"

class AddOperation : public COperation
{
public:
    AddOperation(int a,int b);
    virtual double GetResult();
};

// add.cpp 
#include "add.h"

AddOperation::AddOperation(int a,int b)
{
    m_nFirst=a;
    m_nSecond=b;
}

double AddOperation::GetResult()
{
    return m_nFirst+m_nSecond;
}

3.类 Context:

// context.h
#include "base.h"

class Context
{
private:
    COperation* op;
public:
    Context(COperation* temp);
    double GetResult();
};

// context.cpp 
#include "context.h"

Context::Context(COperation* temp)
{
    op=temp;
}
double Context::GetResult()
{
    return op->GetResult();
}

主函数:

// main.cpp 
#include "add.h"
#include "context.h"

#include <iostream>
using namespace std;

int main()
{
    int a,b;
    char c;
    cin >> a >> b;

    Context *context=new Context(new AddOperation(a,b));
    cout<<context->GetResult()<<endl;

    return 0;
}

书写makefile 文件:

# Makefile 
main:main.o base.o add.o context.o
    g++ main.o base.o add.o context.o -o main
main.o:main.cpp add.h context.h base.h
    g++ -c main.cpp
base.o:base.cpp base.h
    g++ -c base.cpp
add.o : add.cpp base.h
    g++ -c add.cpp
context.o:context.cpp base.h
    g++ -c context.cpp

clean:
    -rm -rf *.o main

操作结果:

ubuntu@ubuntu:~/my_file1/Write-Makefile$ ls
add.cpp  add.h  base.cpp  base.h  context.cpp  context.h  main.cpp  Makefile
ubuntu@ubuntu:~/my_file1/Write-Makefile$

ubuntu@ubuntu:~/my_file1/Write-Makefile$ make
g++ -c add.cpp
g++ -c context.cpp
g++ main.o base.o add.o context.o -o main
ubuntu@ubuntu:~/my_file1/Write-Makefile$ ls
add.cpp  add.o     base.h  context.cpp  context.o  main.cpp  Makefile
add.h    base.cpp  base.o  context.h    main       main.o
ubuntu@ubuntu:~/my_file1/Write-Makefile$ ./main 
3 4
7
ubuntu@ubuntu:~/my_file1/Write-Makefile$

这就是一个基本的Makefile的写法,如果把3个类的cpp文件去掉或者去掉h文件去掉,而是在对应的文件实现,那么Makefile如何书写,感觉挺有意思的。后面的文章会继续讲解。项目源码下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值