可以让“目标”采取争论吗?

时间:2011-04-05 19:24:42

标签: c makefile

让我说我正在做mk“target”来构建一些东西。有可能传递一个参数吗? 即mk“目标”“x”,它会做相应的事情吗?我知道我将提供mk“target”一个参数,我知道它的语义,只是提前不知道这个名字。

可能的?

3 个答案:

答案 0 :(得分:5)

您可能想要使用GNU Make's "Variables"

$ cat Makefile

ifndef LOLCAKES
   LOLCAKES=1
endif

all:
   @echo $(LOLCAKES)

$ make all LOLCAKES=42

你没有解释你想要完成什么,所以很难知道你所追求的是什么样的“论点”。

答案 1 :(得分:2)

make target x会导致make尝试构建target x。没有办法像你似乎期待的修饰符。一个好的解决方案是使用复合名称制定规则:

target: target.debug target.release

target.release:
    # recipe for release build

target.debug:
    # recipe for debug build

然后,您可以使用target.debugtarget.releasetarget,并获得一些理智的行为。

答案 2 :(得分:0)

您可以使用环境变量:

$ cat Makefile 
all:
    @echo $(FOO)
$ FOO=bar make
bar