【发布时间】:2021-10-09 07:33:45
【问题描述】:
write:
@echo `date`
file_1: write file_2
@echo "file_1 begin"
$(shell sleep 3)
@echo "file_1 end"
file_3: write file_4
@echo "file_3 begin"
$(shell sleep 3)
@echo "file_3 end"
all: file_1 file_3
.PHONY: write
当我运行 make 时,它会输出:
Sat Oct 9 15:22:45 CST 2021
file_1 begin
file_3 begin
file_1 end
file_3 end
target write 只运行一次。
我的最终目标是通过写目标write的开始时间来计算file_1和file_3的执行时间。在测试是否会覆盖的过程中,发现了以上问题。如果有更好的计算时间的方法,请告诉我。
【问题讨论】:
-
它按预期工作。我不认为一个目标可以多次执行。要测量时间,请考虑使用
time命令。 -
Makefile 目标不类似于函数,表达对目标的依赖也不类似于调用函数。
make确定需要构建哪些目标,以什么顺序,以便请求的目标目标在其依赖关系方面是最新的。在给定的运行中,没有任何目标被构建超过一次。 -
另外,依赖任何目标的依赖列表的顺序是不明智的。您发现与此类排序相关的任何行为模式都来自
make实现细节,而不是make实用程序的规范。
标签: makefile multiple-makefiles