がここに私のMakefileの縮小版である偽のターゲットでは動作しません。しかし、それは私がmake
を実行するたびに再コンパイル:Makefileの依存関係が
$ make
mkdir -p bin
./node_modules/.bin/coffee -c -o bin src/server.coffee
$ make
mkdir -p bin
./node_modules/.bin/coffee -c -o bin src/server.coffee
私は偽のターゲットを使用しないように、私のMakefileを変更する場合は、期待どおりに動作します。新しいメイクファイル:
bin/server.js: src/server.coffee
mkdir -p bin
./node_modules/.bin/coffee -c -o bin src/server.coffee
結果:
$ make
mkdir -p bin
./node_modules/.bin/coffee -c -o bin src/server.coffee
$ make
make: `bin/server.js' is up to date.
は、なぜそれが偽のターゲットと私の依存関係を尊重しないのだろうか?私が尋ねる理由は、実際には単一のファイルを他の単一のファイルにコンパイルするだけでなく、すべての出力ファイルの名前をターゲットとして使用する必要がないためです。
**空のターゲット**はファイルでなければならず、実際にはタイムスタンプとしてのみ使用されていますか?ターゲットルールにレシピ本体(実行されたコマンド付き)を持たせることができる他の種類の '.PHONY 'はありますか?*依存関係の更新が必要なときにのみ実行されます。 '.PHONY'はレシピ本体を持っているかどうかによって違うことをするようになっているので、かなり壊れているようです。 – jozxyqk