博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
makefile下$^,$@,$?,$<,$(@D),$(@F)定义使用详解
阅读量:4211 次
发布时间:2019-05-26

本文共 1028 字,大约阅读时间需要 3 分钟。

变量定义:

$^

所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的,那个这个变量
会去除重复的依赖目标,只保留一份。

$@

表示规则中的目标文件集。在模式规则中,如果有多个目标,那么,"$@"就是匹配于

目标中模式定义的集合

$?

所有比目标新的依赖目标的集合。以空格分隔。

$<

依赖目标中的第一个目标名字。如果依赖目标是以模式(即"%")定义的,那么"$<"将

是符合模式的一系列的文件集。注意,其是一个一个取出来的。

$(@D)

表示" @ &quot; 的 目 录 部 分 ( 不 以 斜 杠 作 为 结 尾 ) , 如 果 &quot; @&quot;的目录部分(不以斜杠作为结尾) ,如果&quot; @""@“值是"dir/foo.o”,那么"$(@D)"就

是"dir",而如果"$@“中没有包含斜杠的话,其值就是”."(当前目录) 。

$(@F)

表示" @ &quot; 的 文 件 部 分 , 如 果 &quot; @&quot;的文件部分,如果&quot; @""@“值是"dir/foo.o”,那么" ( @ F ) &quot; 就 是 &quot; f o o . o &quot; , &quot; (@F)&quot;就是&quot;foo.o&quot;,&quot; (@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的集合。

转自:

转载地址:http://rfwmi.baihongyu.com/

你可能感兴趣的文章
Android矩阵原理详解(Matrix,ColorMatrix)
查看>>
WINCE的体系结构
查看>>
OpenGL与DirectX 比较
查看>>
应用文件映射进行进程间通讯
查看>>
CentOS5.x 系统安装-图形模式
查看>>
CentOS硬盘安装方法
查看>>
Linux学习记录--关机相关操作
查看>>
Linux学习记录--文件权限
查看>>
Linux学习记录--目录配置FHS
查看>>
Linux学习记录--文件与目录管理
查看>>
Linux学习记录--文件内容查阅
查看>>
Linux学习记录--文件|目录的默认权限与隐藏权限
查看>>
Linux学习记录--命令与文件的查询
查看>>
Linux命令缩写
查看>>
Linux学习记录--文件系统简介
查看>>
Linux学习记录--文件系统简单操作
查看>>
Linux学习记录--磁盘分区,格式化与检验
查看>>
Linux学习记录--磁盘挂载与卸载
查看>>
Linux学习记录--内存交换空间的构建
查看>>
Linux学习记录--文件压缩
查看>>