文件列表和 Makefile 的目录名奇怪行为

dirname strange behavior with file list & Makefile

我的目录:

$ ls *
Makefile

dir1:
file1.txt  file2.txt

dir2:
file1.txt

生成文件:

A = $(wildcard ./dir1/*)
A += $(wildcard ./dir1/*)
B = $(dirname $(A))

print-% : ; @echo $* = $($*)

打印规则的输出:

$ make print-A
A = ./dir1/file1.txt ./dir1/file2.txt ./dir1/file1.txt ./dir1/file2.txt
$ make print-B
B =

我希望 B 变量包含我的子目录相对路径列表(./dir1/./dir2/),为什么这不起作用?如果只有 A.

中的文件就可以了

$(dirname ...)宏是如何定义的? $(dir ...) 可能会如您所愿。