make使用总结(5)-Makefile语法

make使用总结(5)-Makefile语法

通配符

为了方便字符串的处理,make也支持一些通配符。在规则中通配符会被自动展开,但在变量定义和函数引用时,通配符将会失效。此时如果需要使用通配符就要使用wildcard函数。详见此函数。

  1. *:匹配任意长度的任意字符.(注意:匹配文件名,无法匹配 makefile 文件中的规则等字段)
  2. ?:匹配单个任意字符。
  3. [...]:匹配括号中指定的任意一个字符。
  4. ~:代表当前用户目录。

使用例程如下,变量定义在变量定义时使用通配符*.c获取当前目录下所有后缀名为.c的文件:

SRCS :=  $(wildcard *.c)

include命令

稍微复杂点的项目工程,一般都会使用多个Makefile文件。其中子目录中的Makefile文件(通常命名为Make.defs)包含文件的组织信息,而在根目录的Makefile中使用include导入各个子目录Makefile的文件信息。

include指示符可以让make读入其指定的文件。include指定文件时可以支持通配符。当make识别到include指令时,会暂停读入当前的makefile文件,并转而读入include指定的文件,之后再继续读取本文件的剩余内容。include指示符所指示的文件名可以是任何shell能够识别的文件名,这表明include还可以支持包含通配符的文件名.eg:include ./makefile_dir/inc_*.

include指示符包含的文件不包含绝对路径,make会按以下优先级寻找文件:

  1. 当前路径
    1.-I指定的目录.如make -I ./makefile_dir/
  2. /usr/gnu/include
  3. /usr/local/include
  4. /usr/include

tip:

  1. include指示符所指示的文件名如果使用通配符,include的-I选项指定的路径达不到预期效果。
  2. include指示符包含的文件与当前makefile共享变量。也就是说include指示符包含的文件可以直接修改makefile中的变量。
  3. 使用include包含文件时,如果文件不存在,make会发生错误。如果想让make继续执行,可以使用-让make忽略该指令的错误。如-include ./xxx/make.defs.

条件判断

在可裁剪的工程中,条件判断是必不可少的。make提供了ifeqifneq判断指令。

ifeq用于判断条件是否相等,语法如下

ifeq (ARG1, ARG2)
    ...
endif

ifneq格式与ifeq相同,逻辑上与ifneq相反。ifeq/ifneq等关键字后面一定要接一个空格,否则make会因为无法识别关键字而报错!使用例程如下:

ifeq ($(CONFIG_WINDOWS_NATIVE),y)
	rm -rf *.o
endif

关于技术交流

此处后的文字已经和题目内容无关,可以不看。
qq群:825695030
微信公众号:嵌入式的日常
如果上面的文章对你有用,欢迎打赏、点赞、评论。二维码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

theboynoName

感谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值