2016-05-23 15 views
2

どこでも検索しましたが、私はこの機能を見つけることができません。それは可能ではないかもしれません。私はレシピが実行される前と後に何かを実行したい。Makeでセットアップとティアダウンのルーチンをどうやって作るのですか

.BEFORE: 
     echo "Hello world" 
.AFTER: 
     echo "Goodbye cruel world" 
foo.txt: 
     touch foo.txt 

は以下のようなものを出力する:

Hello World 
touch foo.txt 
Goodbye cruel world 

これはなんとかです私はそれがこのようになります期待しましたか?それは.PHONYターゲットに依存して

答えて

1
targets := foo.txt 
.PHONY: after before 

after: $(targets) 
    @echo "Goodbye cruel world" 
$(targets): before 
before: 
    @echo "Hello world" 

foo.txt: 
    touch foo.txt 

私の以前の提案はfoo.txtたびに、レシピを走りました。あなたがそれで大丈夫なら、複数のターゲットを持つことについての問題を修正するダブルコロンの規則を使うこともできます。

targets := foo.txt 

$(targets):: 
    @echo "Hello world" 

foo.txt:: 
    touch [email protected] 

$(targets):: 
    @echo "Goodbye cruel world" 

foo.txtは、この問題を自分自身で解決する必要があり、独自の前提条件を持って終了した場合、もちろん問題は今、前と後のルールは、各ターゲットのための1つを実行されることです。

+0

これは近いです。私がデフォルトのターゲットでmakeを呼び出すだけで動作します。私は質問にこれを含めませんでしたが、個別に目標を設定したい複数の目標がある場合はどうすればよいでしょうか?その場合、アフタターゲットは呼び出されません。 – marshallm

+0

@marshallm更新しました。 – user657267

関連する問題