4
私はちょうど本当にmakeの内部動作を踏襲し始めています。次が動作しない理由しかし、私は理解していない:メイクファイルのワイルドカード(静的なルール?)と偽
test%: test%.foo
@echo [email protected]
@echo $<
all: test1 test2
.PHONY: all test1 test2
期待される動作:
$ make
test1
test1.foo
test2
test2.foo
# 1,2 Order not important
しかし、私が手:
$ make
make: Nothing to be done for `all'.
( "すべての作る"、「作りをtest1 "などは違いはありません)。
誰かがPHONYテストルールが実行されていない理由を説明できますか?
ああ、それは最後のビット "すべてのパターンのルールは暗黙のルールです"ということは私にとって初めてのことです。このインスタンスで私がしたいことをやり遂げるようにするための標準的な方法ですか? – Pat
'test1'と' test2'を非偽にします。 '@touch $ @'を追加してください。 – reinierpost
@reinierpost:実際の 'test1'と' test2'ファイルは変更されません。 Makefileには偽のものとして定義されているので、既存のファイルにかかわらず偽です。それらを偽でないようにするには、 '.PHONY'ルールからそれらを削除するしかありません。 –