我正在使用Make启动verilog编译器的多个版本。我只使用Make来利用-j标志。我的文件看起来像这样
make -j2 allfpga
我调用make -j2 fpga0 fpag3 fpga5 fpga6
或fpag3
但是如果存在拼写错误(例如在我给出ID
的命令中),则在第二个制作目标中,系统将很乐意花费数分钟构建,然后提前停止。
我的问题是,如果某些目标不是真正的目标,我如何才能最初停止?
答案 0 :(得分:1)
没有好办法让“预先筛选”所有要求的目标。在尝试构建目标之前,Make无法知道目标是否可构建(例如,可以使用模式规则或其他东西基于其他目标创建目标)。
但是,你可以这样做:
ALLFPGAS := fpga0 fpga1 fpga2 fpga3 fpga4 fpga5 fpga6
# Get any command line goal which is not one of ALLFPGAS
unknown := $(filter-out $(ALLFPGAS),$(MAKECMDGOALS))
# If there are any, bail!
$(if $(unknown),$(error Unknown FPGA: $(unknown)))
allfpga: $(ALLFPGAS)
$(ALLFPGAS):
cd fpgas/$@/build && $(MAKE)
.PHONY: allfpga $(ALLFPGAS)