我有以下目录:
$ cd dir1
$ tree
[...]
├── autogen.sh
├── CMakeLists.txt
├── common.gmake.in
├── configure.ac
├── Makefile.am
├── src
│ ├── Makefile.am
│ ├── Makefile.in
│ ├── [...]
│ └── dir2
│ ├── CMakeLists.txt
│ ├── Makefile.am
│ ├── [...]
在dir2的Makefile.am中,我有:
[...]
include @abs_top_builddir@/common.gmake
[...]
我第一次编译时,一切正常。但是,如果我想第二次编译,因为我生成了config.status文件,那么Makefile要执行make distclean。它将在dir1中执行它并删除common.gmake。但是由于它是递归的,因此当它进入dir2目录时,会出现以下错误:
Making distclean in dir2
gmake[2]: Entering directory `/dir1/src/dir2'
Makefile:1760: /dir1/common.gmake: No such file or directory
gmake[2]: *** No rule to make target `/dir1/common.gmake'. Stop.
在我看来,automake生成的递归目标是错误的,因为它想要删除以前已删除的文件。你觉得呢?