2011-01-24 10 views
11

Makefileを作成する必要があり、そのルールはrunである必要があります。ただし、実行にはいくつかのパラメータが必要です。Makefileのルールのパラメータ

Makefileでルールを実行するときにどのように引数を渡すことができますか?引数があるrunルールをmake run foo barと入力して実行したいと考えています。

私はこれを試してみましたが、それはうまくいきませんでした:

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

私が供給するパラメータは、第1および第2のです。

答えて

21

makeコマンドにパラメータを渡すときは、他の内部make変数と同じように参照してください。あなたのメイクファイルがどのように見える場合

run: 
     script $(param1) $(param2) 

次の構文でそれを呼び出すことができます。

$> make run param1=20 param2=30 

などのスクリプトを呼び出す必要があります自体を作る

script 20 30 
+1

それは実際に動作しますが、私は私が書くときに実行することができます。run 作る> $(とないのparam1 = を....) – amit

+4

@amitのGR:いいえ、何か作る 'のように実行'です'make 'はそれをターゲット名として解釈したいので不可能です。たとえば、 'すべてのインストールを行う 'と考えてみましょう。まず、ターゲット" all "が処理され、次にターゲット" install "が実行されます。あなたが一種のパラメータになりたいものはすべて、 'key = value'構文(または同じ名前の環境変数)を使って渡されなければなりません。 – DarkDust

2

スクリプトのような引数を渡すことはありません。通常makeは次のように使用されます:単純な 'make'を実行するよりもプロジェクトを設定します。設定は、シェルスクリプト 'configure'を実行することで行うことができます。このスクリプトは、パラメータを渡すことができるスクリプトです。例:

./configure param1 param2 
make run 

configureスクリプトは、パラメータを解析してconfig.mkに書き出す必要があります。 config.mkには、次のものが含まれている必要があります:あなたはまた、正当のパラメータをチェックし、他のチェックと計算を行うことができますあなたの「のconfigure」スクリプトで

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

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

PARAM1 = val1 
PARAM2 = val2 

あなたのMakefileはconfig.mkを含める必要があります。

関連する問題