Makefile中一些参数的使用和区别
来源:互联网 发布:linux ftp命令 带端口 编辑:程序博客网 时间:2024/06/06 03:51
下边列出一些在Makefile文件中进程遇到的一些符合和关键字
1.基本参数
$@表示规则中的所有目标文件的集合。在模式规则中如果有多个目标,“$@”就是匹配于目标中模式定义的集合$% 仅当目标是函数库文件时,表示规则中的目标成员名,如果目标不是函数库文件(UNIX下是.a,Windows是.lib),其值为空。$<依赖目标中的第一个目标文件,如果依赖目标是以模式(即”%“)定义的,则”$<”是符合模式的一系列的文件集 $? 所有比目标新的依赖目标的集合,以空格分隔$^ 所有依赖文件,以空格分隔。如如果在依赖目标中有多个重复的,则自动去除重复的依赖目标,只保留一份$+同”$^”,也是所有依赖目标的集合,只是它不去除重复的依赖目标。$* 目标模式中“%”及其之前的部分$(@D)“$@”的目录部分(不以斜杠作为结尾),如果”$@”中没有包含斜杠,其值为“.”(当前目录)$(@F)“$@”的文件部分,相当于函数”$(notdir $@)”$(*D)同”$(@D)”,取文件的目录部分$(*F)同”$(@F)”,取文件部分,但不取后缀名$(%D) 函数包文件成员的目录部分$(%F) 函数包文件成员的文件名部分$(<D) 依赖目标中的第一个目标的目录部分$(<F) 依赖目标中的第一个目标的文件名部分$(^D) 所有依赖目标文件中目录部分(无相同的)$(^F) 所有依赖目标文件中文件名部分(无相同的)$(+D) 所有依赖目标文件中的目录部分(可以有相同的)$(+F) 所有依赖目标文件中的文件名部分(可以有相同的)$(?D) 所有被更新文件的目录部分$(?F) 所有被更新文件的文件名部分
2.include和sinclude的区别
include xxx make时判断如果xxx不存在则提示错误,**退出编译**sinclude xxx make时判断如果xxx不存在则忽略错误,**继续编译**-include 等同于sinclude
3.”=”,”:=”,”+=”的区别
= 普通赋值,可以先使用后定义,这就导致makefile在全部展开后才能决定变量的值:= 覆盖赋值,之前值被清除,且必须已经定义,在当前的位置就可以决定变量的值+= 添加赋值?= 如果没有被赋值过,就执行赋值操作
4.变量替换
$(VAR:A=B) 同${VAR:A=B}$(VAR:A=B) 替换变量“VAR”中所有“A”字符结尾的字为“B”结尾的字。“结尾”的含义是空格之前(变量值的多个字以空格分开)列如:abcde_qwer_xyz:$(@:_xyz=) 表示把目标"abcde_qwer_xyz"中的"_xyz"替换为空basename 取变量的前缀部分(点号之前的部分)
5.特殊符号
@ 放在行首,表示不打印此行,表示在make时不输出make的信息% 是通配符,%.c表示工程里的.c文件
6.wildcard
在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数 "wildcard"`$(wildcard PATTERN...) `在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表,如果不存在任何符合此模式的文件,函数会忽略模式字符并返回空如:"$(wildcard *.c)"来获取工作目录下的所有的.c文件列表
阅读全文
0 0
- Makefile中一些参数的使用和区别
- makefile 中":"和":="赋值的区别
- Makefile 中 echo 和@echo的区别
- makefile中“=”和“:=”的区别
- makefile中“=”和“:=”的区别
- Makefile 中:= 和=的区别
- makefile中“=”和“:=”的区别
- 对于makefile传递参数的一些问题
- Makefile学习笔记<中一些特殊符号的含义和用法>
- Makefile使用的一些心得
- makefile的和gcc参数
- tar 的使用和一些参数
- Makefile中$$的使用
- Makefile中指示符“include”、“-include”和“sinclude”的区别
- Makefile中指示符“include”、“-include”和“sinclude”的区别
- Makefile中指示符“include”、“-include”和“sinclude”的区别
- Makefile 中 大括号和小括号 的区别
- Makefile中指示符“include”、“-include”和“sinclude”的区别
- APICloud首款全功能集成开发工具重磅发布,彰显云端一体理念
- p4常用命令
- java 通过FreeMarker导出数据库结构word文档
- docker将实例保存为镜像,移除镜像
- time 相关
- Makefile中一些参数的使用和区别
- Redis 集群方法
- 关于js中的undefined和typeof
- 音视频封装格式、编码格式知识
- SVD的数学解释,好文要顶
- ArcGis中空间连接join
- 动态手势识别--训练模板方法(三)
- select详解
- Java编码规划最佳实践