make隐含规则

“隐含规则”为 make 提供了重建一类目标文件通用方法,不需要在 Makefile 中明确地给出
重建某一个目标的命令,甚至可以不用写出明确的规则。make会自动根据已存在(或者可以被创建)
的源文件类型来启动相应的隐含规则。

1、make会对那些没有命令行的规则、 双冒号规则寻找一个隐含规则来执行。
	注意:如果规则存在命令行,则make就会执行命令行,不会启动隐含规则。
2、作为一个规则的依赖文件,在没有一个规则明确描述它的依赖关系的情况下,
    make会将其作为一个目标并为它搜索一个隐含规则,试图重建它。	
3、给目标文件指定明确的依赖文件并不会影响隐含规则的搜索。
	我们来看一个例子:
	foo.o: foo.p
	这个规则指定了“foo”的依赖文件是“foo.p”。但是如果在工作目录下存在同名.c源文件“foo.c”。
执行make的结果就不是用“pc”编译“foo.p”来生成“foo”,而是用“cc”编译“foo.c”来生
成目标文件。这是因为在隐含规则列表中对.c文件的隐含规则处于.p文件隐含规则之前。

重建内嵌隐含规则
重建一个隐含规则时,需要使用相同的目标和依赖文件,但是命令可以不同。这样就替代了
有相同目标和依赖的那个make内嵌的规则,替代之后的隐含规则的顺序由它在Makefile中的
位置决定。例如通常我们Makefile中可能会包含这样一个规则:
%.o : %.c
	$(CC) $(CFLAGS) –D__DEBUG__ $< -o $@
这个模式规则替代了编译.c文件的内嵌隐含规则。
也可以取消一个内嵌的隐含规则。同样需要定义一个和隐含规则具有相同的目标和依赖,没有
命令行的模式规则。例如:如下的规则取消了make编译.s文件的内嵌规则。
%.o : %.s




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值