请教大家makefile 中 $$(<D)这句话是什么意思?
时间: 2024-03-04 12:52:27 浏览: 81
在 Makefile 中,"$$(<D)" 表示获取当前依赖文件所在的目录路径。具体解释如下:
- "$<" 表示当前规则的第一个依赖文件;
- "$(<D)" 表示获取 "$<" 所在的目录路径;
- "$$" 表示转义符 "$",因为 "$" 在 Makefile 中有特殊含义,所以需要进行转义。
因此,"$$(<D)" 表示获取当前规则第一个依赖文件所在的目录路径。
相关问题
makefile中以下几种自动变量的函义是什么? $* $+ $< $? $@ $^ $%
在Makefile中,以下是几种常用的自动变量及其含义:
1. $*:表示目标文件的主文件名(不包含后缀),例如,如果目标文件是test.o,则$*表示test。
2. $+:表示所有的依赖文件,以空格分隔。与$^不同的是,$+会保留重复的依赖文件。
3. $<:表示第一个依赖文件的名称。如果有多个依赖文件,$<只表示第一个。
4. $?: 表示所有比目标文件新的依赖文件列表,以空格分隔。
5. $@:表示目标文件的名称。
6. $^:表示所有的依赖文件列表,以空格分隔。
7. $%:仅适用于静态模式规则中,表示目标成员的成员名。
makefile的 $@ $<的作用
在Makefile中,$@和$<是自动化变量,它们分别表示当前规则中的目标文件和依赖文件中的第一个文件。
$@表示当前规则中的目标文件,用于表示当前构建的目标文件名,可以看作是“目标”或“规则”的名称。
$<表示当前规则中的依赖文件中的第一个文件,用于表示当前需要构建的依赖文件名,可以看作是“依赖关系”中的名称。
例如,如果有一个规则如下:
```
target: dependency
command
```
其中,target是目标文件,dependency是依赖文件,command是构建目标文件的命令。此时,$@表示目标文件的名称target,$<表示依赖文件的名称dependency。
在Makefile中,使用$@和$<可以方便地引用当前规则中的目标文件和依赖文件,避免了手动输入文件名的繁琐操作。
阅读全文