6

我有一个使用 Autoconf 和 A​​utomake 的 C++ 项目。我认为我的目录中有太多源文件src,并将一些文件移动到子目录中。然后,我修改Makefile.am并将这些文件从 更改source.cppsubdir/source.cpp。我知道这种方法应该有效,就像我之前为一些新文件所做的那样(但后来我没有重命名任何东西)。现在我像往常一样运行以下命令:

autoreconf
./configure
make clean
make

我收到类似这样的错误消息:

No rule to make target "source.cpp" needed for "source.o"

我不明白出了什么问题。我检查了我的 Makefile,但它似乎是正确的。所以我将我的 git 存储库克隆到了一个新的地方,并在那里尝试了一个 make,它工作了。没问题,我想,并git clean -xf在我的原始目录上做了一个。在此之后,编译仍然无法正常工作。现在我对两个目录结构进行了比较(又一个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 clean只是做你的makefile中的干净目标。如果要删除.deps目录,请添加

clean::
        rm -rf .deps

到 Makefile。

如果您想git clean为您执行此操作,只需添加-d标志: git 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 回答