快捷搜索:   服务器  安全  linux 安全  MYSQL  dedecms

一套的实用完整Makefile参考模板


  近来,经常看到有人询问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 `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:
  @tar -cf `date +%Y%m%d-%H%M%S`.tar .profile `ls|grep -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) $
顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论