makefile杂谈之三

makefile杂谈之三

分享
2009-12-24 19:48

1.定义的宏是makefile文件全局范围解析还是逐行解析呢?

...

STR=t1

t1:

@echo $(STR)

STR+= t2

t2:

@echo $(STR)

执行make t1和make t2竟然,结果相同,都是t1 t2。这说明是全局范围解析,这对包含多个子模块的#include abc.def情形,更具提示意义。也就是说如果在abc.def内引用$(STR)的话,也会受到同被这个makefile所包含的其他的xxx.def以及makefile自身所影响,当然一在abc.def内添加STR的值,倒不太可能会引用$(STR)。当然如果不是include abc.def,而是make -f ../m.mak 或者 make -C ../m,那就不会有这样的裙带牵连了。


2.后缀指定。.SUFFIXES和.SUFFIXES .c .h .s .d

%o:%c

...

%o:%s

...

仅仅说明的是*.o可以由*.c和*.s生成,但是并没有说只由*.c和*.s生成!所以得加上

.SUFFIXES #cancel all default suffixes to be searched

.SUFFIXES .c .h .s .d #customization only to *.c *.h *.s *.d


%o:%c

...

%o:%s

...

如若不然,编译一个s1.o,makefile会不辞辛劳的沿着vpath把s1.bas,s1.pas,s1.html等等都要过问一遍。如果再加上Dynamic View的配合,肯定会延迟得相当可观的。难怪,不少coder可以make一次的时间内,喝上一杯茶:)

3.准备在明天的时间里,记录一次利用默认规则来改写makefile和*.def的实战经历。

今天就先歇了吧,Make file,make life.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值