Makefile 问题总结

Automatic-Prerequisite:

Makefile 编译过程中有较多的依赖条件,其中.h也是其中的一种,例如如果Main.c 包含def.h,则规则可以这么写:
main.o: def.h
为了避免需要写入大量的.h依赖,常用的编译器都支持自动生成依赖文件,使用方式如下:

%.d: %.c
    @set -e; rm -f $@; \
     $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \
     sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
     rm -f $@.$$$$

https://www.gnu.org/software/make/manual/html_node/Automatic-Prerequisites.html

inclue -include sinclude

Makefile中也支持include功能,其中常见的包含include,-include,sinclude 三种。
include 会执行标准的包含动作,如果未指明文件路径,则遵循以下的文件查找规则:
(1)在当前目录下进行查找
(2)查找“-I”或者“–include-dir”命令指定的目录
(3)查找 “/usr/local/include, /usr/gnu/include, /usr/local/include, /usr/include”
当在这些目录下都没有找到“include”指定的文件时,make将会提示一个包含文件未找到的告警提示,但是不会立刻退出。而是继续处理Makefile的后续内容。当完成读取整个Makefile后,make将试图使用规则来创建通过指示符“include”指定的但未找到的文件,当不能创建它时(没有创建这个文件的规则),make将提示致命错误并退出。会输出类似如下错误提示:
Make: * No rule to make target ‘’. Stop

-include 与include具有相同的功能,但唯一的差异是如果我包含的文件不存在,Makefile会忽略出现的错误继续执行
sinclude 与-include具有相同的功能,为了与某些其他make实现兼容,GNU添加了这个命令

https://www.gnu.org/software/make/manual/html_node/Include.html

Makeifle信息显示

makefile包含三种信息输出命令:
(errortext)textMakefile退 (warning text…)
输出text信息,并在前面添加Makefile名称和行号,但不会错误退出
$(info text…)
输出text信息,不添加Makefile名称和行号,也不会错误退出

https://www.gnu.org/software/make/manual/html_node/Make-Control-Functions.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值