求大神讲解下面这个Makefile的意思;希望能够详细一些;谢谢;

2025-05-18 13:57:51
推荐回答(1个)
回答1:

LIBC_VER = $(shell ls /lib/libc-*.so | cut -c11-13) 显示gcc版本号

CPP_FILE = *.cpp cpp文件扩展名
INC_FILE = -I./ include 路径
TAR_FILE = ./GameProxy 编译目标

INC_TOOL = -I/home/user/install/libevent/include include路径
LNK_TOOL = -L/home/user/install/libevent/lib /usr/lib64/libevent.a -ldl -rdynamic -lrt 链接库路径
LNK_TOOL +=

INC_MYSQL =
LNK_MYSQL =

INC = $(INC_TOOL) $(INC_MYSQL) $(INC_FILE) include路径
LNK = $(LNK_TOOL) $(LNK_MYSQL) 连接库路径

CPP = $(wildcard *.cpp) 源文件为当前文件夹下所有cpp文件
OBJ = $(CPP:%.cpp=%.o) 目标文件为当前文件夹下所有cpp文件每个都生成一个o文件

all:$(TAR_FILE)

$(TAR_FILE): $(OBJ) 生成编译目标
@g++ -g -o $@ $^ $(INC) $(LNK)
@echo $@

%.o: %.cpp 生成.o文件
@g++ -W -Wall -Wshadow -fPIC -g -c $*.cpp $(INC)
@echo $@

clean: 清除文件
rm -f *.o
rm $(TAR_FILE)