Makefile 一个简单例子

//http://wg2009perfect.blog.163.com/blog/static/127997663200992995834510/

在Linux下写c/c++程序的,一定都会用的,下面是一个比较简单的Makefile文件,也是一个比较通俗的:

OBJECT = main.o App.o GetPwd.o md5.o TEA.o QQSession.o QQ.o PcapBase.o

CFLAGS = -g -c -O3

abc: $(OBJECT)

         g++  $(OBJECT)  -o  abc  -g  -lpcap -licui18n -licuuc

main.o: main.cpp App.h

         g++ main.cpp $(CFLAGS)

App.o: App.cpp App.h PcapBase.h Packet.h Common.h QQ.h PktParser.h PcapException.h

         g++ App.cpp  $(CFLAGS)

GetPwd.o:GetPwd.cpp GetPwd.h Common.h Md5.h TEA.h

         g++ GetPwd.cpp  $(CFLAGS)

QQSession.o: QQSession.cpp Packet.h GetPwd.h Common.h TEA.h Md5.h unicode/ucnv.h

         g++ QQSession.cpp  $(CFLAGS)

QQ.o: QQ.cpp Packet.h Md5.h QQSession.h Common.h

         g++ QQ.cpp  $(CFLAGS)

md5.o: md5.cpp Md5.h

         g++ md5.cpp  $(CFLAGS)

TEA.o: TEA.cpp TEA.h Common.h

         g++ TEA.cpp  $(CFLAGS)

PcapBase.o: PcapBase.cpp PcapBase.h PcapException.h

         g++ PcapBase.cpp  $(CFLAGS)

clean :

         rm *.o

分析:

OBJECT = main.o App.o GetPwd.o md5.o TEA.o QQSession.o QQ.o PcapBase.o

所有.cpp 文件都在生成一个对应的.o文件

CFLAGS = -g -c -O3

-g :程序支持调试功能,即用gdb调试;-O3:在编译程序时对程序做优化

abc: $(OBJECT)

$(OBJECT) : shell变量,就是前面定义的那一串等同

g++  $(OBJECT)  -o  abc  -g  -lpcap -licui18n -licuuc

这一行,-lpcap -licui18n –licuuc  , 一些库的调用,因为后面没有跟路径就是在系统路径下

接下来的多行,如下的:

main.o: main.cpp App.h

         g++ main.cpp $(CFLAGS)

.o文件: .cpp文件 .cpp文件依赖的头文件, 下面就是编译了

到最后一行:删除所有的.o文件

clean :

         rm *.o

这个最简单的给初学者做个入门参考,谢谢支持…

原文地址:https://www.cnblogs.com/cheng07045406/p/3521254.html