2012-01-05 47 views
2

我想知道这是否可能。这里的情况:(自动)跨多个生成文件依赖关系

我的项目使用automake来构建它的目标。顶层目录包含通常的configure.acMakefile.am。其中,Makefile.am包含一个SUBDIRS变量列出了子目录,对于我的问题很重要的是docinclude目录。 include目录的makefile看起来像:

nobase_include_HEADERS = <lot-of-headers> 

所以它基本上安装标题。在doc生成文件应该生成html文档了这些文件:

doxygen-stamp: Doxyfile 
    $(DOXYGEN) $< 
    echo "timestamp for Doxyfile" > [email protected] 

all-local: doxygen-stamp 

一切正常,到目前为止,但如果我改变任何头在include文档是否仍然是最新的 - 因为我没有列出它们作为依赖关系。我想要的是有一个doxygen-stamp - 一旦标题更改没有重新构建的目标再次列出所有标头为依赖关系。这是可能的,如果是这样,怎么样?

回答

1

在这种情况下,使用单一的Makefile将在被暗示 - 尽管你可以使用的automake include指令分割它(见第7.3节“的另一种方法子目录”在上午手册)。因此:

#can't use nobase_ 
include_HEADERS = include/foo.h include/bar.h 

doc/doxygen-stamp: ${include_HEADERS} 
+0

我不喜欢这打破了严格的分离,但考虑到合并Makefiles似乎是更好的解决方案。 – cschwan 2012-01-09 18:17:01

-1

我认为如果你使doxygen-stamp也取决于'$(top_srcdir)/include/ * .h'(或.hpp或其他),它将在doxygen-stamp相对于任何.h过期时重建文件在包含目录中。

doxygen-stamp: Doxyfile $(top_srcdir)/include/*.h 
+0

嗯。我已经想过类似的东西,但在Automake中,这些通配符规则不起作用! – cschwan 2012-01-06 18:11:09

+1

我不认为这是automake,我认为这是你的做法。我们使用GNU make和通配符规则工作正常(我讨厌他们,但他们工作)。 – 2012-01-06 18:32:39

+1

如果你使用的是gnumake,你可以试试这个:'HEADERS:=(通配符$(top_srcdir)/ include/*。h)' – 2012-01-06 20:37:13