"make clean"不会清除Automake的依赖关系吗?

pet*_*ohn 4 git automake dependencies makefile

我有一个使用Autoconf和Automake的C++项目.我决定在我的src目录中有太多源文件,并将一些文件移动到子目录.然后,我修改了Makefile.am这些文件并将其更改source.cppsubdir/source.cpp.我知道这种方法应该可行,就像我之前为一些新文件做的那样(但后来我没有重命名).现在我像往常一样运行以下内容:

autoreconf
./configure
make clean
make
Run Code Online (Sandbox Code Playgroud)

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

No rule to make target "source.cpp" needed for "source.o"
Run Code Online (Sandbox Code Playgroud)

我不明白出了什么问题.我检查了我的Makefile,但它似乎是正确的.所以我将我的git存储库克隆到了一个新的地方,然后在那里尝试了一个make,它运行起来了.没问题,我想,并git clean -xf在我的原始目录上做了一个.在此之后,编译仍然无法正常工作.现在我在两个目录结构上做了一个差异(在另一个目录结构之后git clean -xf,发现还有一个.deps目录.删除之后,它编译了.

故事的寓意如下:

  • make clean 不会删除依赖项.
  • git clean -xf 不删除依赖项(可能是因为隐藏目录).

是否有任何方法可以自动删除此目录make clean(或可能git clean)?当然我可以手动完成,但是在清理后还有依赖文件是非常烦人的.

lda*_*v1s 13

有没有办法让make clean(或者可能是git clean)自动删除这个目录?

使用make distclean而不是make clean删除.deps.


Chr*_*odd 1

make clean只是执行 makefile 中的 clean 目标。如果要删除.deps目录,添加

clean::
        rm -rf .deps
Run Code Online (Sandbox Code Playgroud)

到 Makefile。

如果您想git clean为您执行此操作,只需添加-d标志: git clean -fxd还将清除未跟踪的子目录。