2012-01-05 94 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