配置Make使用错误的目标立即失败

时间:2017-11-17 20:31:45

标签: makefile

我正在使用Make启动verilog编译器的多个版本。我只使用Make来利用-j标志。我的文件看起来像这样

make -j2 allfpga

我调用make -j2 fpga0 fpag3 fpga5 fpga6fpag3

之一

但是如果存在拼写错误(例如在我给出ID的命令中),则在第二个制作目标中,系统将很乐意花费数分钟构建,然后提前停止。

我的问题是,如果某些目标不是真正的目标,我如何才能最初停止?

1 个答案:

答案 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)