应用系统的目录结构如下:
| 代码: |
| ~/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 `ls|grep ‘lib’;ls|grep -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: |
~/src/lib/LIB_1 /makefile文件内容如下:
| 代码: |
| ALL: INFO all
BASEDIR = $(HOME) PRDNAME = $(LIB)/libLIB_1 PRODUCT = $(PRDNAME).a $(PRDNAME).so OBJS = LIB_1_f1.o LIB_1_f2.o AR = ar <特定平台ar可选参数> all: $(PRODUCT) $(PRDNAME).a: $(OBJS) $(PRDNAME).so: $(OBJS) .c.o: *.h $(INC)/*.h INFO: clear: FORCE clean: FORCE clear FORCE: |
~/src/APP_A/mod_a /makefile文件内容如下:
| 代码: |
| ALL: INFO all
BASEDIR = $(HOME) MODULE = $(BIN)/APP_A_mod_a CC = cc <特定平台cc可选参数> all: $(PRODUCT) $(MODULE): APP_A_mod_a.o APP_A_mod_a_t: APP_A_mod_a_t.o .c.o: *.h $(INC)/*.h INFO: clear: FORCE clean: FORCE clear FORCE: |
使用方法:
1. 在主目录下使用’make’命令能够首先建立函数库,然后建立所有目标。
2.在主目录下使用’make tar’命令能够对整个系统进行打包,生成的文件以日期和时间命名。
3.在最下层子目录中直接使用’make’命令会首先给出用法提示,然后建 立本目录所有目标。
4.在最下层子目录中使用’make all’命令不出现提示信息,直接建立本目录所有目标。
5.在最下层子目录 中使用’make clear’命令可以清除本目录的所有.o文件。
6.在最下层子目录中使用’make clean’命令可以清除本目录的所有.o文件和建立的所有目标。
注:在 某些环境下,由于make中调用shell命令的机制,可能不支持递归。