如果没有传递参数,请停止make

时间:2016-01-15 13:12:00

标签: makefile

我有一个makefile

PATH = "MyFolder_"{ver}

compile:
    [list_of_commands] $PATH

然后像这样运行

make ver="1.1" compile

如果未指定 ver ,如何停止编译?
我想要这样的东西

#input
make compile

然后输出

No version specified. Compilation terminated.

1 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。部分取决于你正在使用哪个版本的make,以及你正在运行它的操作系统(哪个shell调用)。

请注意, NOT 应该在makefile中使用变量PATH;这是系统的PATH变量,重置它会破坏你的所有食谱。

在这样的变量中包含引号通常也是一个坏主意。如果你想引用它,那么在食谱中添加引号。

如果你有GNU make,你可以这样做:

ifeq ($(ver),)
$(error No version specified.)
endif

如果您没有GNU make,但是您使用的是UNIX系统或带有UNIX shell的Windows,则可以执行以下操作:

MYPATH = MyFolder_$(ver)
compile:
        [ -n "$(ver)" ] || { echo "No version specified."; exit 1; }
        [list_of_commands] "$(MYPATH)"

如果你在Windows上使用Windows,那么你可以做类似的事情,但我不确定细节。