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
確かに手動で行うことはできますが、クリーンアップ後に依存関係ファイルが残っているのは非常に面倒です。