如果用linux开发中,不可能不知道makefile,这里简单的介绍一下我的makfile。
CC = g++
CFLAG = -gstabs+ -c
TARGET = Server
OBJ = EventTaskManger.o HttpSocket.o main.o AppServer.o XMLDocument.o
LIB_OBJ = ArgAnalyser.o Event.o EventLoop.o Handle.o Listener.o Lock.o Socket.o SysLog.o Thread.o
#INCLUDE =
LIB_INC = -I /home/jimmy/MyWorkSpace/Compent/Include
LIB = -lpthread
LIB_PATH=
vpath %.cpp ../App: /home/jimmy/MyWorkSpace/Compent/Src
$(TARGET): $(OBJ) $(LIB_OBJ)
$(CC) $(OBJ) $(LIB_OBJ) -o $(TARGET) $(LIB)
@echo "make it sucessed!"
EventTaskManger.o: EventTaskManger.cpp
$(CC) $(CFLAG) $< -o $@ $(LIB_INC)
HttpSocket.o: HttpSocket.cpp
$(CC) $(CFLAG) $< -o $@ $(LIB_INC)
AppServer.o: AppServer.cpp
$(CC) $(CFLAG) $< -o $@ $(LIB_INC)
main.o: main.cpp
$(CC) $(CFLAG) $< -o $@ $(LIB_INC)
################################LIB_SRC###################################################
ArgAnalyser.o: ArgAnalyser.cpp
$(CC) $(CFLAG) $< -o $@ $(LIB_INC)
Event.o: Event.cpp
$(CC) $(CFLAG) $< -o $@ $(LIB_INC)
EventLoop.o: EventLoop.cpp
$(CC) $(CFLAG) $< -o $@ $(LIB_INC)
Handle.o: Handle.cpp
$(CC) $(CFLAG) $< -o $@ $(LIB_INC)
Listener.o: Listener.cpp
$(CC) $(CFLAG) $< -o $@ $(LIB_INC)
Lock.o: Lock.cpp
$(CC) $(CFLAG) $< -o $@ $(LIB_INC)
Socket.o: Socket.cpp
$(CC) $(CFLAG) $< -o $@ $(LIB_INC)
SysLog.o: SysLog.cpp
$(CC) $(CFLAG) $< -o $@ $(LIB_INC)
Thread.o: Thread.cpp
$(CC) $(CFLAG) $< -o $@ $(LIB_INC)
XMLDocument.o: XMLDocument.cpp
$(CC) $(CFLAG) $< -o $@ $(LIB_INC)
clean:
rm -fr *.o $(TARGET)
@echo "clean sucessed"
$(TARGET): $(OBJ) $(LIB_OBJ)
$(CC) $(OBJ) $(LIB_OBJ) -o $(TARGET) $(LIB)
@echo "make it sucessed!"
$(TARGET) : 你可以认为是目标文件, $(OBJ) $(LIB_OBJ)是依赖的文件,
这里说明一下规则:(个人观点)
$(TARGET)依赖于$(OBJ) $(LIB_OBJ)文件,如果$(TARGET)的文件日期早于$(OBJ) &(LIB_OBJ),或则$(OBJ) &(LIB_OBJ)文件日期更新,找到他们依赖关系,执行相关信息
备注:
1.clean 这个不是目标文件,他属于“指令集”, 这个没有依赖文件,在命令行中执行 make clean 则执行下面命令
2.执行的命令一定要用tab键打头。
3.这个makefile文件有个问题,头文件更新后,无法makfie最新的Target,所以,做好调用一下make clean 在make