我有一个使用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
。在此之后,编译仍然无法正常工作。现在我在两个目录结构上做了一个差异(在另一个git clean -xf
之后,发现还有一个.deps
目录。在删除之后,它编译了。
故事的寓意如下:
make clean
不会删除依赖项。git clean -xf
不会删除依赖项(可能是因为隐藏目录)。有没有办法让make clean
(或可能git clean
)自动删除此目录?当然我可以手动完成,但是在干净之后留下依赖文件非常烦人。
答案 0 :(得分:13)
有没有办法让make clean(或者可能是git clean)自动删除这个目录?
使用make distclean
代替make clean
,这将删除.deps
。
答案 1 :(得分:0)
make clean
只是做makefile中的干净目标。如果要删除.deps
目录,请添加
clean::
rm -rf .deps
到Makefile。
如果您希望git clean
为您执行此操作,只需添加-d
标记:git clean -fxd
也会清除未跟踪的子目录。
答案 2 :(得分:0)
如果您愿意运行git clean -xf
,您应该愿意运行git clean -xfd
。
来自git help clean
:
-d Remove untracted directories in addition to untracted files.