makefile 指定include_嵌入式杂谈之makefile补充

makefile预定义变量

预定义变量即系统自带的变量

d82e39861615d345f4ca2438a23a424d.png

makefile自动变量

964ef3a203974e03eb9f81fe2c196b2f.png

最下面两个常用

makefile隐式规则

自动寻找.o文件对应的同名.c文件

不用指定生成.o文件的规则

相当于指定.o文件以后,会自动将同名.c文件进行编译

这在uboot以及linux kernel中是非常常见的、

uboot以及linux kernel中经常出现include ···config.mk,这也相当于包含一个子makefile,虽然文件名不像,但可以把它当作一个makefile文件来看待,二者基本没有区别

引用其他makefile及makefile嵌套

包含:

include makefile文件名

相当于子makefile文件直接展开

嵌套:

subsystem:

cd subdir && $(MAKE)

等价于:

subsystem:

$(MAKE) -C subdir

上面两种写法效果相同

makefile管理命令

d59d181f87d2a6042c9851906762dff0.png

源文件过多的编译方案

makefile分开多文件或者分级

output文件不止一个文件解决方案

  1. 多个makefile文件,互相嵌套
  2. 使用伪目标 make all

makefile环境变量

  1. 普通变量导出以后即为环境变量

一般要求环境变量大写,普通变量小写

使用export 变量名进行导出

  1. 使用环境变量 环境变量类似于工程中所有makefile之间共享的全局变量

定义一个环境变量会影响到工程中的其他makefile文件,因此小心使用

普通变量只在当前文件起作用

  1. makefile本身自带的环境变量 例如上面提到的预定义变量

执行make命令的传参操作也相当于传入了一个环境变量(优先级最高,可以覆盖原来makefile文件中定义的变量值)

makefile通配符

89453a68c638fa5804779ff62038e6ef.png

%表示任意字符,与*相似,但%一般只用于规则描述中,所以又称为规则通配符

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值