私は中間ステップとして.ecファイルから.cファイルを生成するコンパイラを持っています。コンパイラは.cファイルを削除しません。 .oファイルを生成するために、$ CCの呼び出しをスキップするようコンパイラーに要求することはできません。 GNU make(3.81)に中間ファイルとして生成された.cファイルを扱い、それらをクリーンアップさせようとしています。以下は、暗黙の規則を持たないファイル拡張子で悪い動作を再現する独立した例です。 GNU中間ファイルを強制的に削除する
.INTERMEDIATE: %.delme
%.o: %.ec
cp $< $(<:.ec=.delme)
cp $(<:.ec=.delme) [email protected]
all: test.o
は、テストケースを実行するには、次の
rm -f test.*
touch test.ec
make
if [[ -e test.delme ]]; then echo "Failure"; else echo "Success"; fi
これは私の簡単なcpの例では動作しますが、クロスコンパイラでは動作しません。なぜ私は正確にはわからない。私は特定の状況のためにrmソリューションに落ちましたが、これはより慣用的なソリューションだと思います。だから私はこれを受け入れられた答えにしているのです。 –