让我说我正在做mk“target”来构建一些东西。有可能传递一个参数吗? 即mk“目标”“x”,它会做相应的事情吗?我知道我将提供mk“target”一个参数,我知道它的语义,只是提前不知道这个名字。
可能的?
答案 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.debug
,target.release
或target
,并获得一些理智的行为。
答案 2 :(得分:0)
您可以使用环境变量:
$ cat Makefile
all:
@echo $(FOO)
$ FOO=bar make
bar