AutoconfとAutomakeを使用するC++プロジェクトがあります。ディレクトリにソースファイルが多すぎると判断し、src一部のファイルをサブディレクトリに移動しました。次に、を変更し、Makefile.amこれらのファイルをからsource.cppに変更しましたsubdir/source.cpp。以前にいくつかの新しいファイルに対してこれを行ったので、このアプローチが機能するはずだとわかっていました(しかし、その後は何も名前を変更しませんでした)。今、私はいつものように次を実行しました:
autoreconf
./configure
make clean
make
次のようなエラーメッセージが表示されました。
No rule to make target "source.cpp" needed for "source.o"
何が悪かったのかわかりませんでした。Makefileを確認しましたが、正しいようです。そこで、gitリポジトリを新しい場所に複製し、そこでmakeを試してみたところ、うまくいきました。問題ありません、私は思って、git clean -xf私の元のディレクトリでやりました。この後、コンパイルはまだ機能しませんでした。ここで、2つのディレクトリ構造を比較しました(次々git clean -xfと、ディレクトリが残っていることがわかりました.deps。それを削除した後、コンパイルされました。
物語の教訓は次のとおりです。
make clean依存関係は削除されません。git clean -xf依存関係は削除されません(おそらく隠しディレクトリが原因です)。
このディレクトリを自動的に削除するmake clean(または削除する)方法はありますか?git clean確かに手動で行うことはできますが、クリーンアップ後に依存関係ファイルが残っているのは非常に面倒です。