Makefile GNU make:为什么目标总是在运行?
下面是示例makefile 如果syn输出未改变,ila不得运行。 不明白为什么ila总是在运行Makefile GNU make:为什么目标总是在运行?,makefile,Makefile,下面是示例makefile 如果syn输出未改变,ila不得运行。 不明白为什么ila总是在运行 DEBUG_FILE = ./debug/debug.txt INPUTS0 = syn.tcl OUTPUTS0 = syn.out OUTPUT_ILA = $(DEBUG_FILE) ############################################################################ # # Dependencies / rules #
DEBUG_FILE = ./debug/debug.txt
INPUTS0 = syn.tcl
OUTPUTS0 = syn.out
OUTPUT_ILA = $(DEBUG_FILE)
############################################################################
#
# Dependencies / rules
#
############################################################################
ifdef DEBUG_FILE
all: ila
else
all: syn
endif
## Synthesis
$(OUTPUTS0): $(INPUTS0)
echo "Synthesis Process."
touch $(OUTPUTS0)
$(OUTPUT_ILA): $(OUTPUTS0)
echo "Debug Probe Insertion."
touch $(OUTPUT_ILA)
syn: $(OUTPUTS0)
ila: $(OUTPUT_ILA)
- 首次运行:
回应“合成过程”。
合成工艺。
触摸同步输出
回显“调试探针插入”。
调试探针插入
- 第二轮:
回显“调试探针插入”。
调试探针插入
因为$(OUTPUT_ILA)应该比$(OUTPUTS0)新。我不希望ila第二次运行 您不创建文件
ila
。make
假设您想要创建一个文件ila
,该文件应该比$(OUTPUT\u ila)
更新,而不是创建一个文件ila
。make
假设您想要创建一个文件ila
,该文件应该比$(OUTPUT\u ila)
更新。您仍然有问题吗?
我无法重现这个错误。对我来说,$(OUTPUT_ILA)配方只是第一次运行。(或者如果更新了syn.out或syn.tcl) 我猜您在运行之间删除了debug.txt文件 请注意,您可以使用跟踪和调试标志更轻松地确定
make
尝试重新生成某些目标的原因。(关于搜索隐式规则,您将获得大量无关的输出,除非您还使用下面看到的第三个标志禁用内置规则。)
运行以下命令:
make --trace -d --no-builtin-rules
或
make--trace-d--no内置规则[]
您对此仍有问题吗?
我无法重现这个错误。对我来说,$(OUTPUT_ILA)配方只是第一次运行。(或者如果更新了syn.out或syn.tcl) 我猜您在运行之间删除了debug.txt文件 请注意,您可以使用跟踪和调试标志更轻松地确定
make
尝试重新生成某些目标的原因。(关于搜索隐式规则,您将获得大量无关的输出,除非您还使用下面看到的第三个标志禁用内置规则。)
运行以下命令:
make --trace -d --no-builtin-rules
或
make--trace-d--no内置规则[]
能否请您编辑您的问题,以显示执行错误操作的make
的示例运行?我无法重现此错误。您能在保留错误的同时简化生成文件吗?似乎“touch$(OUTPUT_ILA)”不会创建新文件。因此,ila正在继续运行。请编辑您的问题,以显示执行错误操作的make
示例运行。我无法重现此错误。您能在保留错误的同时简化生成文件吗?似乎“touch$(OUTPUT_ILA)”不会创建新文件。所以ila一直在运行。不太明白,你能告诉我更多细节吗。为什么syn运行没有问题?不太明白,你能告诉我更多细节吗。为什么syn运行没有问题?