Linux makefile多个.cpp文件编译
因为目前所做服务器是再Linux ubuntu16的环境下开发,且工程涉及多个.cpp文件,那么单纯用g++就无法实现工程的编译,所以需要用到makefile来实现多文件编译,在这里对makefile的使用做个简单的记录
一、makefile的作用
一个定义了一系列编译规则的文档,记录原始代码如何编译的详细信息.makefile写好后通过make命令即可对工程进行编译;
二、 工程makefile脚本源码
.PHONY: run clean
run:go
epollbase.o:EpollBase.cpp EpollBase.h
g++ -c EpollBase.cpp -o epollbase.o
tcpserver.o:TcpServerImp.cpp TcpServerImp.h
g++ -c TcpServerImp.cpp -o tcpserver.o
tcpclient.o:TcpClientImp.cpp TcpClientImp.h
g++ -c TcpClientImp.cpp -o tcpclient.o
csockfac.o:CSocketFactory.cpp CSocketFactory.h
g++ -c CSocketFactory.cpp -o csockfac.o
cepoll.o:CEpoll.cpp CEpoll.h
g++ -c CEpoll.cpp -o cepoll.o
ctask.o:CTask.cpp CTask.h
g++ -c CTask.cpp -o ctask.o
cpool.o:CThreadPool.cpp CThreadPool.h
g++ -c CThreadPool.cpp -o cpool.o
cshmfifo.o:CShm.cpp CShm.h
g++ -c CShm.cpp -o cshmfifo.o
msqque.o:Msqque.cpp Msqque.h
g++ -c Msqque.cpp -o msqque.o
csem.o:CSem.cpp CSem.h
g++ -c CSem.cpp -o csem.o
main.o:main.cpp Msqque.h CSem.h
g++ -c main.cpp -o main.o
go:main.o msqque.o csem.o cshmfifo.o cpool.o ctask.o cepoll.o tcpserver.o tcpclient.o csockfac.o epollbase.o
g++ -o go main.o msqque.o csem.o cshmfifo.o cpool.o ctask.o cepoll.o csockfac.o tcpserver.o tcpclient.o epollbase.o -lpthread
./go
clean:
rm -f *.o go
说明:
1. makefile文件中一定要讲.cpp文件先编译成.o文件,再将.o文件编译成可执行程序
2. .PHONY: run clean有点类似C语言的宏定义,run和clean是伪命令,make + 伪命令可执行其代表的编译代码
3. 每个编译行都需要tab键开头
4. ./go表示编译完毕立即执行可执行程序
三、 如果脚本文件名不是makefile可在终端输入 make -f 脚本文件名 也可进行编译
四、 参考博客
https://blog.csdn.net/qq_41748900/article/details/82316662
https://www.cnblogs.com/henuliulei/p/9918054.html