2011-01-24 90 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) 

在您的「配置」腳本,你也可以檢查的正確性參數並進行其他的檢查和計算。