1

Makefile は、中間ファイルを介して別のファイルからファイルを生成し、中間ファイルを自動的に削除します。

.INTERMEDIATE $(B_FILES)

%.b : %.a
    a_to_b $<

%.c : %.b
    b_to_c $<

all: $(A_FILES)

上記は簡単な例です。.c ファイルを生成し、中間の .b ファイルを削除します。具体的に作成された場合、中間 .b ファイルを生成して保持することができます。

$ make my_file.b

ただし、中間ファイルを生成するルールを追加すると、次のようになります。

b_files: $(B_FILES)

すべての中間ファイルを作成することは可能です:

$ make b_files

ただし、.b ファイルは中間ファイルとしてリストされているため、make は作成後にそれらを削除します。この特定のターゲットが使用されているときに make がそれらを削除しないようにすることは可能ですか?

答えは b_files ルールで .INTERMEDIATE を再定義する必要があると思いますが、特定のルール内でターゲットを再定義できるかどうかはわかりません。

4

1 に答える 1

0

こちら で説明されているように、代わりに.PRECIOUSまたは.SECONDARYを使用してみてください。条件付きでこれを行う必要がある場合は、MAKECMDGOALSを使用して特別なターゲットを確認できます。

ifeq ($(MAKECMDGOALS),b_files)
  .SECONDARY: $(B_FILES)
endif
于 2013-03-21T21:07:16.377 に答える