Makefile で特定のファイルを削除しないようにする
Makefile プログラミング
Makefile で更新日を残すために作成したファイルが最後に自動で削除されてしまったので、削除されないようにしてみました。
Makefile で、次回実行時に更新が必要かの指標にするファイルを touch
で作成したのですけど、それが make
実行終了時に自動的に削除されてしまいました。
どうやら make
のシステムでは、最終的に生成しようとしているファイル以外は『中間ファイル』とみなして、最後に削除する対象になるみたいです。
状況
Makefile のことはよく分からないので、正しい書き方か分からないのですけど、たとえば次のように *.podspec
から %.lastpush
を生成するルールがあったとします。
%.podspec :
@make $@.lastpush
%.lastpush : %.podspec
pod repo push $(REPO) $<
@touch $@
このとき make PODNAME.podspec
みたいに実行すると、最後に実行した日付を記録するために touch
で作成したファイルが、最後にきれいに消されてしまいました。
中間ファイルを削除させない
このファイルを削除させないようにするには、次のように .PRECIOUS
の依存元としてこのファイルを指定することで、対応できる様子でした。
.PRECIOUS : %.lastpush
この .PRECIOUS
に指定したファイルは、中間ファイルではなく成果物として残すことができるようです。
そもそももっとスマートな Makefile の書き方があるのかも分かりませんけど、とりあえずはこんな感じでしのいでみることにします。