1

私はメイクファイルが初めてです。次のステートメントを含むメイクファイルがあります。

....

all: prepare hreader $(DIRS)
    echo $(DIRS)

.PHONY: prepare hreader $(DIRS)

prepare:                              
    mkdir -p ./lib
    $(MAKE) -C game_proc prepare     #here, why 'prepare'?!

hreader:
    make -C extra/hreader

$(DIRS):
    $(MAKE) -C $@

私のメイクファイル ディレクトリには、'game_proc' ディレクトリがあります。そして、GNU make チュートリアルから、私は以下の行を知っています

prepare:                           
    mkdir -p ./lib
    $(MAKE) -C game_proc

'game_proc' で再帰的な make を行います。

しかし、なぜ「準備」もレシピに表示されるのでしょうか。「$(MAKE) -C game_proc prepare」をどのように解釈すればよいですか? 'game_proc' で再帰的な make を実行します。「準備」の再帰的なメイクも?

ありがとう、

4

1 に答える 1

1

偽のターゲットは、ルールがその名前の出力ファイルを作成しないことをmakeに通知するだけです。

コメント後に更新

わかりました。ここでは、2つの別々のmakefileが使用されていることを理解することが重要です。

./Makefile

game_proc/Makefile

混乱は、両方prepareのにターゲットが存在することに起因します。 Makefile

つまり、game_proc/Makefileターゲットにありprepareます。prepare2状況がより明確になるように、少しの間、そのターゲットの名前をに変更しましょう。

./Makefile:

    .PHONY: prepare hreader $(DIRS)

prepare:                              
    mkdir -p ./lib
    $(MAKE) -C game_proc prepare2 # refers to game_proc/Makefile's prepare2 target

game_proc/Makefile:

prepare2:
    ...
于 2012-12-08T09:55:19.943 に答える