将变量从终端传递给makefile

时间:2015-07-25 02:32:52

标签: c linux vim makefile

我是Linux Mint的新手,想知道是否有可能在我的make文件中我可以创建一个变量然后当我调用该函数时(不知道你会在这里调用它),例如run或所有这个变量。我基本上想要做的是从终端我想做这样的事情:

make open(variable)

然后将该变量传递给makefile,其中包括:

all:

    vim $(filename)

会收到它并在Vim中打开文件。

2 个答案:

答案 0 :(得分:3)

给出你的示例makefile,你可以从命令行调用make

make filename=/tmp/my/file

然后/tmp/my/file将在vim中打开。

答案 1 :(得分:3)

在vim示例中,您需要:

make all filename=the-file.txt

请注意,假设它是Makefile中的第一个目标,可以省略all。语法基本上是variable=value

使用以下Makefile可以更好地证明这一点:

echo:
    echo $(MY_ECHO)

若:make MY_ECHO=hello变量MY_ECHO将为字符串hello

如何指定一个或多个目标与不使用变量时相同,只需要确保variable=value没有任何空格,因此要知道它是变量还是目标。例如,如果你这样做:

make MY_ECHO= asdf

您将收到错误:

make: *** No rule to make target 'asdf'.  Stop.

因为make会认为asdf是目标。如果您想使用带空格的值,则需要用引号括起来:

make MY_ECHO="hello world"