6

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

4

3 に答える 3

14

make clean(または場合によってはgit clean)でこのディレクトリを自動的に削除する方法はありますか?

make distclean代わりに使用するとmake clean、が削除され.depsます。

于 2012-07-09T18:24:40.270 に答える
1

make cleanmakefile内のクリーンなターゲットが何であれ、それを実行します。ディレクトリを削除する場合は、次の.depsように追加します。

clean::
        rm -rf .deps

Makefileに。

これを実行したい場合は、フラグ git cleanを追加するだけです。追跡されていないサブディレクトリも削除されます。-dgit clean -fxd

于 2012-07-07T20:55:47.683 に答える
0

実行する意思がある場合はgit clean -xf、実行する意思があるはずですgit clean -xfd

差出人git help clean

-d Remove untracted directories in addition to untracted files.

于 2016-05-26T20:58:07.643 に答える