近来,经常看到有人询问makefile的写法,这里根据本人经验给出一个应用系统的完整例子,便于各位参考。 应用系统的目录结构如下: 代码: ~/bin 可执行程序目录 ~/etc 配置文件目录 ~/inc 头文件目录 ~/lib 函数库文件目录 ~/log 日志文件目录 ~/src 源程序文件目录 ~/src/lib 函数库源程序目录 ~/src/lib/LIB_1 函数库libLIB_1源程序目录 ~/src/APP_A 子系统APP_A源程序目录 ~/src/APP_A/mod_a 子系统APP_A模块mod_a源程序目录 ~/.profile ~/makefile ~/makefile文件内容如下: 代码: all: @MakeSubDir() { for DIR in `lsgrep 'lib';lsgrep -v 'lib'`; do if [ -d ${DIR} ]; then cd ${DIR}; MakeSubDir; if [ -f makefile -o -f Makefile ]; then echo ""; pwd; make all; fi; cd ..; fi; done; }; MakeSubDir tar: @tar -cf `date +%Y%m%d-%H%M%S`.tar .profile `lsgrep -v '.tar'` ~/src/lib/LIB_1/makefile文件内容如下: 代码: ALL: INFO all BASEDIR = $(HOME) INC = $(BASEDIR)/inc LIB = $(BASEDIR)/lib PRDNAME = $(LIB)/libLIB_1 PRODUCT = $(PRDNAME).a $(PRDNAME).so OBJS = LIB_1_f1.o LIB_1_f2.o AR = ar CC = cc all: $(PRODUCT) $(PRDNAME).a: $(OBJS) @echo " Making $@ ..." @$(AR) -r $@ $(OBJS) $(PRDNAME).so: $(OBJS) @echo " Making $@ ..." @$(CC) -G -o $@ $(OBJS) .c.o: *.h $(INC)/*.h @echo " Compiling $< ..." @$(CC) -c -I$(INC) $
(出处:http://www.sheup.com)
上一页 [1] [2]