在Makefile中,%与*的作用有所不同。%用于匹配目录下所有符合模式的文件,比如,如果编写规则为%.o: %.c,那么此规则将应用于所有.c文件,生成对应的.o文件。而*则表示匹配任意数量的字符,例如,*.[ch]可以匹配所有.c和.h文件。另外,$%在目标是归档成员的情况下,表示归档成员的名称。例如,...
② 模式匹配字符 % 第二种用于字符匹配的是 % , % 字符作用类似于通配符 * ,它和 * 的区别是,模式匹配字符可以对目标文件与依赖文件进行匹配。比如说我们在写 makefile 的时候,经常会写这样的一条规则 代码语言:javascript 复制 %.o:%.c 这里的 % 代表的是一个文件名,也就是一个字符串。首先,所有的 ....
是一种字符串处理的模式匹配方式, 作用是取CONFIG_CROSS_COMPILE 定义中有"" 括起来的数据值,如 CONFIG_CROSS_COMPILE="arm-none-linux-gnueabi-"则取出来的值即为arm-none-linux-gnueabi-,就是交叉编译器前缀。CONFIG_CROSS_COMPILE,通常由make menuconfig 配置时设定,保存如 arm 配置保存在arch/...
由于在大型工程中,一个完整的c语言项目往往需要很多的c\h文件构成,手动输入gcc xxxxx来编译项目是一个无聊的重复性工作,make的作用就出现了,通过写好的makefile文件,make后会自动的编译修改的文件,而不会整体以编译. 规则格式 目标:依赖文件集合(.o文件) 命令1(生成.o文件) 命令2 ... ... 示例 以下 (最终...
.PHONY的作用一:不产生目标文件 .PHONY是一个伪目标,Makefile中将.PHONY放在一个目标前就是指明这个目标是伪文件目标。其作用就是防止在Makefile中定义的执行命令的目标和工作目录下的实际文件出现名字冲突。例子如下: clean :rm*.o temp 上述Makefile文件在第一次执行make clean以后会产生clean文件,导致第二次运行...
当使用“*”作为变量赋值时,需进行转义以避免被解析为通配符,例如将“*.c”正确赋值应为“\*.c”。值得注意的是,在Windows系统中,文件路径分隔符为“\”,需特别注意避免混淆。在赋值过程中,通配符并不总能发挥预期作用,比如期望赋值为所有以.o结尾的文件名列表时,实际结果仅为通配符字符串“*...
2、%的作用,比如当sub.o找到不到依赖的时候,回来这一条做匹配; 例如: 隐含规则2 上面找不到.o的规则的会去第6行执行 3、同一个目标,一条规则有命令,另一个没有,他们的依赖会合并在一起 例如: 隐含规则3 第5行和第8行合并 重点记住这三条,其他的有遇到在临时去查 ...
.PHONY关键字作用:强制认为目录下不存在该目标文件,使得make总是执行该规则,企图重新生成该目标。(伪规则执行完之后,无论是否生成了该伪目标,make都认为已经生成了该目标,伪目标文件的更新时间是该伪规则执行完毕的那一刻,这样就可以用该更新时间去执行依赖伪目标的规则)...
隐式规则副作用 编译行为难以控制 大量使用隐式规则可能产生意想不到的编译行为 编译效率低下 make从隐式规则和自定义规则中选择最终使用的规则 隐式规则链 当依赖的目标不存在时,make会极力组合各种隐式规则对目标进行创建,进而产生意料之外的编译行为。例如:需要名为N.o的目标,隐式规则创建过程为:N.y=>N.c=...