最近学习设计模式的时候,开始用起来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如何书写,感觉挺有意思的。后面的文章会继续讲解。项目源码下载