gpt4 book ai didi

makefile - 什么 makefile 延迟评估规则控制这种行为?

转载 作者:行者123 更新时间:2023-12-04 15:17:20 25 4
gpt4 key购买 nike

在该目录被配方更新后,我正在尝试为目录的内容创建一个 makefile 变量。
为什么这不起作用 :

A_FILE = $(wildcard subdir/*)

all: a
@echo $(A_FILE)

a:
@mkdir ./subdir
@touch subdir/b
@touch a
$ rm -rf ./subdir && make

$
...而这样做:
A_FILE = $(wildcard subdir/*)

all: a
@echo $(A_FILE)

a: subdir/b
@touch a

subdir/b:
@mkdir ./subdir
@touch subdir/b
$ rm -rf ./subdir && make
subdir/b
$
?
我认为惰性求值意味着在实际使用之前不会对变量进行求值。在两个版本中, $(A_FILE)在同一个配方中使用,并且在评估了先决条件之后。事实上,我很难阐明两个规则之间的有意义的区别,而不是表面上的:第一个是两个规则/先决条件的链,第二个是三个的链。

最佳答案

您还需要删除 a :

$ rm -rf ./subdir a && make
由于您已删除 subdir但不是 a , a:规则未触发。仅此规则运行:
all: a
@echo $(A_FILE)

subdir未创建, $(wildcard subdir/*)扩张是空的。

关于makefile - 什么 makefile 延迟评估规则控制这种行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64084461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com