2011-01-24 157 views
11

我需要创建一个Makefile,它应该有一个run规则。但是,运行需要一些参数。Makefile中的规则参数

有没有人有任何想法如何在Makefile中运行规则时传递参数?我想通过输入make run foo bar来运行带参数的run规则。

我想这一点,但没有奏效:

run: 
    make compile 
    ./scripts/runTrips $1 $2 $PLACES $OUT $VERS 

我想提供的参数是第一和第二。

回答

21

将参数传递给make命令时,像引用其他内部make变量一样引用它们。

如果你的Makefile看起来像:

run: 
     script $(param1) $(param2) 

您可以用下面的语法调用它:

$> make run param1=20 param2=30 

,并应调用脚本,如:

script 20 30 
+1

它的实际工作,但我可以把它当我写运行: $>使运行(而不是参数1 = ....) – amit 2011-01-24 14:38:09

2

使自己不提供像脚本一样的传递参数。 make通常以下列方式使用:配置项目比运行简单的'make'。配置可以通过运行shell脚本'configure'完成。这个脚本是你可以传递参数的脚本。例如:

./configure param1 param2 
make run 

配置脚本必须解析参数并将它们写出到config.mk。 config.mk必须包含以下内容:

PARAM1 = val1 
PARAM2 = val2 

Makefile中必须包括config.mk:

TOP = . 
include $(TOP)/config.mk 

run: 
    make compile 
    ./scripts/runTrips $(PARAM1) $(PARAM2) $(PLACES) $(OUT) $(VERS) 

在您的“配置”脚本,你也可以检查的正确性参数并进行其他的检查和计算。