| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
一套完整的makefile样板
一套完整的makefile样板
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-25 9:14:05
近来,经常看到有人询问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'`
[/code:1:569e1de998]
[b:569e1de998]~/src/lib/LIB_1/makefile文件内容如下:[/b:569e1de998]
[code:1:569e1de998]
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 <特定平台ar可选参数>
CC = 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) $<

INFO:
@echo " make all - same with 'make' except this message"
@echo " make clear - remove object files"
@echo " make clean - remove all object and target files"
@echo ""

clear: FORCE
@rm -f *.o

clean: FORCE clear
@rm -f $(PRODUCT)

FORCE:
[/code:1:569e1de998]
[b:569e1de998]~/src/APP_A/mod_a/makefile文件内容如下:[/b:569e1de998]
[code:1:569e1de998]
ALL: INFO all

BASEDIR = $(HOME)
INC = $(BASEDIR)/inc
LIB = $(BASEDIR)/lib
BIN = $(BASEDIR)/bin

MODULE = $(BIN)/APP_A_mod_a
TESTER = APP_A_mod_a_t
PRODUCT = $(SERVER) $(TESTER)

CC = cc <特定平台cc可选参数>

all: $(PRODUCT)

$(MODULE): APP_A_mod_a.o
@echo " Making $@ ..."
@$(CC) $? -o$@ -L$(LIB) -lLIB_1

APP_A_mod_a_t: APP_A_mod_a_t.o
@echo " Making $@ ..."
@$(CC) $? -o$@ -L$(LIB) -lLIB_1

.c.o: *.h $(INC)/*.h
@echo " Compiling $< ..."
@$(CC) -c -I$(INC) $<

INFO:
@echo " make all - same with 'make' except this message"
@echo " make clear - remove object files"
@echo " make clean - remove all object and target files"
@echo ""

clear: FORCE
@rm -f *.o

clean: FORCE clear
@rm -f $(PRODUCT)

FORCE:

使用方法:
1.在主目录下使用'make'命令能够首先建立函数库,然后建立所有目标。
2.在主目录下使用'make tar'命令能够对整个系统进行打包,生成的文件以日期和时间命名。
3.在最下层子目录中直接使用'make'命令会首先给出用法提示,然后建立本目录所有目标。
4.在最下层子目录中使用'make all'命令不出现提示信息,直接建立本目录所有目标。
5.在最下层子目录中使用'make clear'命令可以清除本目录的所有.o文件。
6.在最下层子目录中使用'make clean'命令可以清除本目录的所有.o文件和建立的所有目标。
注:在某些环境下,由于make中调用shell命令的机制,可能不支持递归。【转自世纪安全网 http://www.21safe.com】
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    微软推出MSN搜索完整版 
    ICQ发布最新完整中文版 
    ICQ发布最新完整中文版 
    系统完整性
    Oracle安全全接触(完整

    Copyright © 2006-2008 www.anquan365.com 安全365
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览