Makefile中自动化变量使用详解
2017-09-22 13:45
337 查看
###Date: 2017/9/24
$^
所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的,那个这个变量
会去除重复的依赖目标,只保留一份。
$@
表示规则中的目标文件集。在模式规则中,如果有多个目标,那么,"$@"就是匹配于
目标中模式定义的集合。
$?
所有比目标新的依赖目标的集合。以空格分隔。
$<
依赖目标中的第一个目标名字。如果依赖目标是以模式(即"%")定义的,那么"$<"将
是符合模式的一系列的文件集。注意,其是一个一个取出来的。
$(@D)
表示"$@"的目录部分(不以斜杠作为结尾) ,如果"$@"值是"dir/foo.o",那么"$(@D)"就
是"dir",而如果"$@"中没有包含斜杠的话,其值就是"."(当前目录)
。
$(@F)
表示"$@"的文件部分,如果"$@"值是"dir/foo.o",那么"$(@F)"就是"foo.o","$(@F)"相
当于函数"$(notdir $@)"
举例详解:
有main.c test.c test1.c test2.c 四个源文件
例子1:
%.o : %.c
gcc -c $< -o $@
把所以的c文件编译生成对应的o文件,$<代表每次取的c文件,$@代表每次c文件对应的目标文件
例子2:
main : main.o test.o test1.o test2.o
gcc -o $@ $^
把所有的o文件编译生成可执行的main文件,$^代表所以的依赖文件集合(main.o
test.o test1.o test2.o),$@
代表目标文件(main)。
例子3:
lib : test.o test1.o test2.o
ar r lib $?
把有更新的依赖文件重新打包到库lib中, 如果只有test1.o更新,则$?代表test1.o,
如果test.o test1.o都有更新,
则$?代表test.o test1.o的集合。
总结:
$^ 所有依赖目标的集合
$? 所有有更新的依赖目标集合
$< 依赖目标中的第一个目标,如果依赖以(%)模式定义,则一个一个取出来的
$@ 目标文件
$(@D) $@的目录部分
$(@F) $@的文件部分
$^
所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的,那个这个变量
会去除重复的依赖目标,只保留一份。
$@
表示规则中的目标文件集。在模式规则中,如果有多个目标,那么,"$@"就是匹配于
目标中模式定义的集合。
$?
所有比目标新的依赖目标的集合。以空格分隔。
$<
依赖目标中的第一个目标名字。如果依赖目标是以模式(即"%")定义的,那么"$<"将
是符合模式的一系列的文件集。注意,其是一个一个取出来的。
$(@D)
表示"$@"的目录部分(不以斜杠作为结尾) ,如果"$@"值是"dir/foo.o",那么"$(@D)"就
是"dir",而如果"$@"中没有包含斜杠的话,其值就是"."(当前目录)
。
$(@F)
表示"$@"的文件部分,如果"$@"值是"dir/foo.o",那么"$(@F)"就是"foo.o","$(@F)"相
当于函数"$(notdir $@)"
举例详解:
有main.c test.c test1.c test2.c 四个源文件
例子1:
%.o : %.c
gcc -c $< -o $@
把所以的c文件编译生成对应的o文件,$<代表每次取的c文件,$@代表每次c文件对应的目标文件
例子2:
main : main.o test.o test1.o test2.o
gcc -o $@ $^
把所有的o文件编译生成可执行的main文件,$^代表所以的依赖文件集合(main.o
test.o test1.o test2.o),$@
代表目标文件(main)。
例子3:
lib : test.o test1.o test2.o
ar r lib $?
把有更新的依赖文件重新打包到库lib中, 如果只有test1.o更新,则$?代表test1.o,
如果test.o test1.o都有更新,
则$?代表test.o test1.o的集合。
总结:
$^ 所有依赖目标的集合
$? 所有有更新的依赖目标集合
$< 依赖目标中的第一个目标,如果依赖以(%)模式定义,则一个一个取出来的
$@ 目标文件
$(@D) $@的目录部分
$(@F) $@的文件部分
相关文章推荐
- Makefile详解-使用变量
- 【 Makefile 编程基础之三】详解 Makefile 变量的定义规则使用!
- makefile详解 使用变量 十七
- 【 Makefile 编程基础之三】详解 Makefile 变量的定义规则使用!
- 【 Makefile 编程基础之三】详解 Makefile 变量的定义规则使用
- makefile文件详解五——使用变量
- Makefile 自动化变量使用
- Makefile详解(三)-使用变量
- makefile详解(04) 使用变量
- register_globals使用详解 为什么我的表单无法传递数据?为什么我的程序无法得到传递过来的变量?
- Makefile完全解析PART5.使用变量
- shell特定变量和Makefile中自动化变量的对比记忆
- makefile 自动化变量
- MakeFile精华【四】---使用变量
- 【 Makefile 编程基础之四】详解Makefile 函数的语法与使用!
- Makefile(二)-----Makefile中使用变量
- Makefile中自动化变量
- makefile自动化变量
- 跟我一起写 Makefile (五)——使用变量
- Makefile学习笔记---------自动化变量