makefile--wildcard关键字

我们首先来看一个简单的makefile,该文件的目的是将该文件夹下的所有.c文件编译链接为可执行文件test。我们可以这么写:

all:
	armcc -o test a.c b.c c.c d.c

现在我们采用定义变量的方式进行简化(*是通配符,*.c表示所有的.c文件)

SRC = *.c

all:
	armcc -o test ${SRC}

 注意红色方框框出来的区别!!

这个地方SRC变量并没有展开为当前路径下的所有.c文件的列表,这是因为:

1、Makefile中的变量其实就是C/C++中的宏。调用变量的时候只是原地替换

2、在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTERN...) 。

 了解了wildcard的使用方法,我们可以继续修改如下:

SRC = $(wildcard *.c)

all:
	armcc -o test ${SRC}

 

 

ref:

https://www.cnblogs.com/MMLoveMeMM/articles/3851812.html

https://blog.csdn.net/liangkaiming/article/details/6267357

https://blog.csdn.net/qq_32693119/article/details/84701554

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GNU make中文手册..................................................................................................................... 1 ver - 3.8 ....................................................................................................................................... 1 第一章:概述...............................................................................................................................7 1.1 概述 ................................................................................................................................. 7 1.2 准备知识.......................................................................................................................... 8 第二章 GNU make 介绍 ............................................................................................................. 9 2 GNU make 介绍.................................................................................................................... 9 2.1 Makefile简介.................................................................................................................. 10 2.2 Makefile规则介绍........................................................................................................... 11 2.3 简单的示例..................................................................................................................... 12 2.4 make如何工作 ............................................................................................................... 13 2.5 指定变量 ........................................................................................................................ 15 2.6 自动推导规则................................................................................................................. 16 2.7 另类风格的makefile ....................................................................................................... 17 2.8 清除工作目录过程文件................................................................................................... 18 第三章:Makefile 总述.............................................................................................................. 20 3 Makefile总述........................................................................................................................ 20 3.1 Makefile的内容............................................................................................................... 20 3.2 makefile文件的命名 ....................................................................................................... 21 3.3 包含其它makefile文件.................................................................................................... 22 3.4 变量 MAKEFILES.......................................................................................................... 24 3.5 变量 MAKEFILE_LIST .................................................................................................. 26 3.6 其他特殊变量................................................................................................................. 26 3.7 makefile文件的重建 ....................................................................................................... 27 3.8 重载另外一个makefile.................................................................................................... 28 3.9 make如何解析makefile文件........................................................................................... 30 3.9.1 变量取值 .................................................................................................................. 30 3.9.2 条件语句 .................................................................................................................. 31 3.9.3 规则的定义............................................................................................................... 31 3.10 总结 ...............................................................................................................................31 第四章:Makefile的规则............................................................................................................ 33 4 Makefile规则........................................................................................................................ 33 4.1 一个例子........................................................................................................................ 33 4.2 规则语法 ........................................................................................................................ 34 4.3 依赖的类型..................................................................................................................... 35 4.4 文件名使用通配符.......................................................................................................... 36 4.4.1 统配符使用举例........................................................................................................ 37 4.4.2 通配符存在的缺陷.................................................................................................... 38 4.4.3 函数wildcard ............................................................................................................ 38 4.5 目录搜寻........................................................................................................................ 39 4.5.1 一般搜索(变量VPATH )........................................................................................ 39 4.5.2 选择性搜索(关键字vpath ).................................................................................... 40 4.5.3 目录搜索的机制........................................................................................................ 41 4.5.4 命令行和搜索目录 .................................................................................................... 44 4.5.5 隐含规则和搜索目录................................................................................................. 44 4.5.6 库文件和搜索目录 .................................................................................................... 45 2004年9月11日 2 ----------------------- Page 3----------------------- GNU make中文手册 4.6 Makefile伪目标............................................................................................................... 46 4.7 强制目标(没有命令或依赖的规则)............................................................................. 50 4.8 空目标文件..................................................................................................................... 50 4.9 Makefile的特殊目标....................................................................................................... 51 4.10 多目标............................................................................................................................ 54 4.11 多规则目标..................................................................................................................... 55 4.12 静态模式 ........................................................................................................................ 56 4.12.1 静态模式规则的语法 ....................................................................................... 56 4.12.2 静态模式和隐含规则 ....................................................................................... 58 4.13 双冒号规则..................................................................................................................... 59 4.14 自动产生依赖................................................................................................................. 60 第五章:规则的命令 .................................................................................................................. 63 5 为规则书写命令 ................................................................................................................... 63 5.1 命令回显 ........................................................................................................................ 63 5.2 命令的执行..................................................................................................................... 64 5.3 并发执行命令................................................................................................................. 65 5.4 命令执行的错误.............................................................................................................. 67 5.5 中断make的执行............................................................................................................ 68 5.6 make的递归执行............................................................................................................ 69 5.6.1 变量MAKE ............................................................................................................... 70 5.6.2 变量和递归............................................................................................................... 71 5.6.3 命令行选项和递归 .................................................................................................... 75 5.6.4 -w选项...................................................................................................................... 77 5.7 定义命令包..................................................................................................................... 78 5.8 空命令............................................................................................................................ 80 第六章:Makefile中的变量......................................................................................................... 81 6 使用变量.............................................................................................................................. 81 6.1 变量的引用..................................................................................................................... 82 6.2 两种变量定义(赋值)................................................................................................... 83 6.2.1 递归展开式变量........................................................................................................ 83 6.2.2 直接展开式变量........................................................................................................ 85 6.2.3 定义一个空格 ........................................................................................................... 86 6.2.4 “?=”操作符............................................................................................................. 87 6.3 变量的高级用法.............................................................................................................. 88 6.3.1 变量的替换引用........................................................................................................ 88 6.3.2 变量的套嵌引用........................................................................................................ 88 6.4 变量取值........................................................................................................................ 92 6.5 如何设置变量................................................................................................................. 93 6.6 追加变量值..................................................................................................................... 94 6.7 override 指示符............................................................................................................. 96 6.8 多行定义........................................................................................................................ 98 6.9 系统环境变量................................................................................................................. 99 6.10 目标指定变量............................................................................................................... 101 6.11 模式指定变量 ............................................................................................................... 103 第七章:Makefile的条件执行................................................................................................... 104 7 Makefile的条件判断........................................................................................................... 104 7.1 一个例子...................................................................................................................... 104 7.2 条件判断的基本语法 .................................................................................................... 105 7.3 标记测试的条件语句 .................................................................................................... 108 第八章:make的内嵌函数........................................................................................................ 109 8 make的函数....................................................................................................................... 109 2004年9月11日 3 ----------------------- Page 4----------------------- GNU make中文手册 8.1 函数的调用语法............................................................................................................ 109 8.2 文本处理函数............................................................................................................... 110 8.2.1 $(subst FROM,TO,TEXT) ..................................................................................... 110 8.2.2 $(patsubst PATTERN,REPLACEMENT,TEXT) ................................................... 110 8.2.3 $(strip STRINT)..................................................................................................... 112 8.2.4 $(findstring FIND,IN) ............................................................................................ 112 8.2.5 $(filter PATTERN…,TEXT) ................................................................................... 112 8.2.6 $(filter-out PATTERN...,TEXT) ............................................................................. 113 8.2.7 $(sort LIST) ........................................................................................................... 113 8.2.8 $(word N,TEXT) .................................................................................................... 114 8.2.9 $(wordlist S,E,TEXT)............................................................................................ 114 8.2.10 $(words TEXT) ............................................................................................ 114 8.2.11 $(firstword NAMES…) ................................................................................ 115 8.3 文件名处理函数............................................................................................................ 115 8.3.1 $(dir NAMES…) .................................................................................................... 115 8.3.2 $(notdir NAMES…)............................................................................................... 116 8.3.3 $(suffix NAMES…) ............................................................................................... 116 8.3.4 $(basename NAMES…) ....................................................................................... 117 8.3.5 $(addsuffix SUFFIX,NAMES…) ........................................................................... 117 8.3.6 $(addprefix PREFIX,NAMES…) ........................................................................... 118 8.3.7 $(join LIST1,LIST2)............................................................................................... 118 8.3.8 $(wildcard PATTERN) .......................................................................................... 119 8.4 foreach 函数................................................................................................................ 119 8.5 if 函数.......................................................................................................................... 120 8.6 call函数........................................................................................................................ 121 8.7 value函数..................................................................................................................... 123 8.8 eval函数....................................................................................................................... 124 8.9 origin函数..................................................................................................................... 125 8.10 shell函数...................................................................................................................... 127 8.11 make的控制函数.......................................................................................................... 128 8.11.1 $(error TEXT…) ........................................................................................... 128 8.11.2 $(warning TEXT…)...................................................................................... 129 第九章:执行make .................................................................................................................. 130 9 执行make .......................................................................................................................... 130 9.1 指定makefile文件......................................................................................................... 130 9.2 指定终极目标............................................................................................................... 131 9.3 替代命令的执行............................................................................................................ 133 9.4 防止特定文件重建........................................................................................................ 135 9.5 替换变量定义............................................................................................................... 136 9.6 使用make进行编译测试............................................................................................... 137 9.7 Tmake的命令行选项.................................................................................................... 138 第十章:make的隐含规则........................................................................................................ 143 10 使用隐含规则............................................................................................................... 143 10.1 隐含规则的使用............................................................................................................ 143 10.2 make的隐含规则一览................................................................................................... 145 10.3 隐含变量...................................................................................................................... 148 10.3.1 代表命令的变量 ............................................................................................ 149 10.3.2 命令参数的变量 ............................................................................................ 150 10.4 make隐含规则链.......................................................................................................... 151 10.5 模式规则 ...................................................................................................................... 153 10.5.1 模式规则介绍................................................................................................ 153 10.5.2 模式规则示例................................................................................................ 155 10.5.3 自动化变量.................................................................................................... 156 2004年9月11日 4 ----------------------- Page 5----------------------- GNU make中文手册 T10.5.4 T模式的匹配 ................................................................................................. 159 10.5.5 万用规则....................................................................................................... 160 10.5.6 重建内嵌隐含规则......................................................................................... 161 10.6 缺省规则 ...................................................................................................................... 162 10.7 后缀规则 ...................................................................................................................... 162 10.8 隐含规则搜索算法........................................................................................................ 164 第十一章:使用make更新静态库文件...................................................................................... 166 11 更新静态库文件............................................................................................................ 166 11.1 库成员作为目标............................................................................................................ 166 11.2 静态库的更新............................................................................................................... 167 11.2.1 更新静态库的符号索引表.............................................................................. 168 11.3 make静态库的注意事项 ............................................................................................... 168 11.4 静态库的后缀规则........................................................................................................ 169 第十二章 : GNU make的特点............................................................................................... 170 12 GNU make的一些特点................................................................................................. 170 12.1 源自System v的特点.................................................................................................... 170 12.2 源自其他版本的特点.................................................................................................... 171 12.3 GNU make 自身的特点................................................................................................. 172 第十三章 和其它版本的兼容.................................................................................................... 174 13 不兼容性...................................................................................................................... 174 第十四章 Makefile的约定 ........................................................................................................ 176 14 书写约定...................................................................................................................... 176 14.1 基本的约定................................................................................................................... 176 14.2 规则命令行的约定........................................................................................................ 178 14.3 代表命令变量............................................................................................................... 179 14.4 安装目录变量............................................................................................................... 180 14.5 Makefile的标准目标名.................................................................................................. 185 14.6 安装命令分类............................................................................................................... 190 第十五章 make的常见错误信息............................................................................................... 193 15 make产生的错误信息................................................................................................... 193 附录1:关键字索引.................................................................................................................. 196 GNU make可识别的指示符:.............................................................................................. 196 GNU make函数:............................................................................................................... 197 GNU make的自动化变量..................................................................................................... 197 GNU make环境变量............................................................................................................ 198 后序

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值