【发布时间】:2012-07-07 20:58:57
【问题描述】:
我有一个使用 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)自动删除这个目录?当然我可以手动完成,但是清理后还有依赖文件很烦人。
【问题讨论】:
-
在编辑
Makefile.am或从configure.ac中删除AM_MAINTAINER_MODE后运行autoreconf,可能会解决您的问题。
标签: git dependencies makefile automake