自定义makefile

来源:互联网 发布:锵锵三人行9月11 知乎 编辑:程序博客网 时间:2024/04/28 12:29

随着技术的不断积累,发现有很多知识有必要分享一下,在此先分享一下Makefile的使用:

(一)单独模块的makefile

该Makefile是我在使用的过程中逐渐积累下来的,相当于一个小的模块的Makefile,可以直接生成一个.so或.a文件

# $< 第一个依赖文件# $@ 目标文件# $^ 所有依赖文件#定义gccCC := gccLD := gccMKDIR:=mkdir#定义各个目录IDIR=includeODIR=objLDIR=libSRCDIR=src#定义各个flagsCCFLAGS = -g CCFLAGS += -I$(IDIR)#CCFLAGS += -I ../include#CCFLAGS += -I ../../includeCCFLAGS += -std=c99CCFLAGS += -Wall CCFLAGS += -fPICCCFLAGS += -D _OS_LINUX_ LDFLAGS := -lpthread -lm#定义目标文件_OBJ+=hsc.o_OBJ+=skt.oOBJ=$(patsubst %, $(ODIR)/%, $(_OBJ))#定义lib文件#_LIB=libskt.a#LIB=$(patsubst %, $(LDIR)/%, $(_LIB))#_SO_LIB=libskt.so#SO_LIB=$(patsubst %, $(LDIR)/%, $(_SO_LIB)).PHONY: allall: create_dir $(LIB) $(SO_LIB)#生成lib文件$(LIB): $(OBJ)ar -rc $@ $^$(SO_LIB):$(OBJ)ld -shared -o $@ $^create_dir:@if test ! -d $(ODIR);\then\mkdir $(ODIR);\fi@if test ! -d $(LDIR);\then\mkdir $(LDIR);\fi#生成目标文件$(ODIR)/%.o: $(SRCDIR)/%.c $(DEPS)$(CC) -c -o $@ $<  $(CCFLAGS).PHONY: cleanclean:rm -rf $(ODIR) $(LDIR) 
(二)一个可执行程序的makefile:

该makefile相当简单,结果会生成两个可执行文件:server,client

CC=gccRM=rmCFLAGS+=-D _OS_LINUX_CFLAGS+= -I ../includeCFLAGS+= -WallCFLAGS+= -gLDFLAGS+= -lpthread ../lib/libskt.soBINARIES=BINARIES+=serverBINARIES+=clientdefault: allserver: server.c$(CC) server.c -o server $(CFLAGS) $(LDFLAGS)client: client.c$(CC) client.c -o client $(CFLAGS) $(LDFLAGS)all: $(BINARIES)clean:$(RM) -f *.o$(RM) -f $(BINARIES)




0 0
原创粉丝点击