gnu make 手册 学习笔记 C语言 / C++ 构建工具 part.4 Pattern rule 隐式规则 implicit rule

GNU Make manual 学习笔记 C语言 / c++ 构建工具

4-1.Pattern rule

有Implicit Rules/隐私规则,和过时的后缀规则。主要是为了方便使用。
可以使用 make -p 来显示默认的规则,当然也可以使用配置文件覆盖规则。

如果prerequires没有找到对应的target,或者文件,会使用pattern rule来进行模式匹配,
如果匹配上的话,使用pattern rule定义的规则,做出target/文件,让别的target引用。

如果编译的时候出现奇怪的现象,可以覆盖这些pattern rule,就当是写shell来写Makefile
简单的C语言编译的隐含规则。
%.o: %.c
#  recipe to execute (built-in):     将.c文件编译为.o文件
    $(COMPILE.c) $(OUTPUT_OPTION) $<
    
%.o: %.C
#  recipe to execute (built-in):    将.C文件编译为.o文件
    $(COMPILE.C) $(OUTPUT_OPTION) $<

%: %.o
#  recipe to execute (built-in):   将.o文件链接为可执行文件
    $(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@    
例子

Makefile

.PHONY: all clean

test_target : src/main.o   test.o
		#这里没有写recipe,prequires中的.o文件本身也还没存在,
	    #例如src/main.o 这个prequires,make没有找到这个文件,然后找它的同名target,也没找到,就会pattern中的下面这个
	    #使用.c文件编译成.o文件

#改写的默认的pattern rule,依然会编译,但是会输出一行信息
%.o : %.c	
	$(COMPILE.c)    $<   $(OUTPUT_OPTION) 
	@echo c-----------------o

clean:
	rm -rf  *.o src/*.o lib/*.o *.exe src/*.exe lib/*.exe

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值