3

include ステートメントを含むメイクファイルがあります。含まれているメイクファイルの内容を制御することはできません。それでも、ターゲットの「一部」(すべてではない)の前に、いくつかの前処理ステップを追加できるようにしたいと考えています。次の例を検討してください。

install:
      @echo "install target"

include othermakefile.mk

othermakefile.mkにはインストールターゲットも含まれています。このスクリプトを実行すると、make は警告を表示し、最初のインストールターゲットを無視します。

4

1 に答える 1

3

簡単なことはありません:

install: pre_install

.PHONY: pre_install
pre_install:
    do preinstallation things

include othermakefile.mk

編集:またはその preqs のいずれか
を実行する場合は、次の方法があります。それは粗雑で醜いですが、仕事をします:pre_installinstall

install: pre_install
    $(MAKE) -f othermakefile.mk $@

.PHONY: pre_install
pre_install:
    do preinstallation things

これにより、 のすべての前提条件が再構築されるとは限らないことに注意してくださいinstall。したがって、それらの一部は古い状態のままで、 の影響を反映していない可能性がありpre_installます。それが十分ではなく、他のすべてpre_installの前提条件の前に必要な場合は、オプション フラグを追加できます。

install: pre_install
    $(MAKE) --always-make -f othermakefile.mk $@

ここで、Make はすべてのターゲットが古くなっていると想定し、ゼロから再構築します (その後pre_install)。

于 2012-06-20T17:47:23.237 に答える