分享
 
 
 

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

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

近来,经常看到有人询问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) $

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:

~/src/APP_A/mod_a/makefile文件内容如下:

代码:

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

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文件和建立的所有目标。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有