【发布时间】:2017-01-04 18:20:02
【问题描述】:
当规则创建一个应该修改通配符扩展行为的文件时,我无法理解 Makefile 如何处理变量扩展。
例如,我有以下 Makefile:
TEXT_FILES = $(wildcard *.txt)
all: create test
create:
@touch hello.txt
test:
@printf "The files are $(TEXT_FILES)\n"
我在运行make 时期望得到的是
文件是 hello.txt
因为TEXT_FILES 应该在调用时进行评估,而不是在定义时进行评估。但是,我实际上得到了(运行两次)
文件是(第一次执行时变量为空)
文件是hello.txt(下次找到)
如何获得所需的行为?
【问题讨论】:
-
在这里stackoverflow.com/questions/22630996/… 找到了这个可能相关的问题,仍然没有解决方案。
-
您的确切用例是什么?也许这是一个 XY 问题。
-
我有一个文件夹,其中包含 C 代码中的模板,这些模板被转换为 1 - 1 到其他东西(也在 C 中),但在此过程中可能会生成其他文件发现这个:stackoverflow.com/questions/9744865/… 显然是通配符扩展在评估规则之前很久就发生了,所以没有办法实现我想要的行为
-
你想用“附加文件”做什么?你知道他们的名字吗:你能从你的模板中“提取”吗?还是这些生成的文件的名字是随机的?
标签: makefile