2012-05-21 62 views
3

我正在編寫一個庫(使用libtools),其中所有的API文檔都是使用doxygen完成的。使用自動工具生成(並安裝)doxygen文檔

我想知道是否有一種簡單的方法將生成的doxygen文檔安裝到autotools中。

我認爲構建文檔應該很簡單。 但是一旦我運行doxygen,將生成(例如).html文件放入$(htmldir)中的正確方法是什麼?

的問題似乎是,我不知道(我也不想知道)的文件doxygen的是要創造我,所以我真的不能一一列舉所有進入html_DATA

我想是這樣「html_DATA = HTML /*.*」是壞主意

回答

0

雖然我沒有與我自己,幾點建議在此郵件線程做自動工具太多的經驗可能是使用: http://old.nabble.com/How-to-install-doxygen-generated-HTML-documentation--td17029178.html

+0

感謝提示。您的代碼中的建議似乎與我的「html_DATA = html /*.*」相當,所以看起來我從一開始就處於「正確」軌道。 –

+0

上面的鏈接是我瀏覽器中的空白頁面 –

+0

如果鏈接到外部內容,那麼也可以在這裏包含答案。鏈接對我來說很重要。 – ePirat

0

我使用Oren Ben-Kiki的宏,見http://www.ben-kiki.org/oren/doxample/或Google吧。該腳本以PDF/HTML/man(可配置)格式創建doxygen文檔。

將生成的幫助文件添加到Makefile.am中的* dist_doc_DATA *列表中,以便安裝它們。

2

使用一些貢獻的MACRO可能會更緊湊。在這裏,我必須想出一個簡單的方法,基於由約翰Calcote皮克從自動工具書中的例子246

添加以下的configure.ac略高於

AC_CONFIG_FILES([Makefile 

AC_CHECK_PROGS([DOXYGEN], [doxygen]) 
if test -z "$DOXYGEN"; then 
    AC_MSG_WARN([Doxygen not found - continue without Doxygen support]) 
fi 
AC_CHECK_PROGS([DOT], [dot]) 
if test -z "$DOT"; then 
    AC_MSG_ERROR([Doxygen needs dot, please install dot first]) 
fi 
AC_CHECK_PROGS([PDFLATEX], [pdflatex]) 
if test -z "$PDFLATEX"; then 
    AC_MSG_ERROR([Doxygen needs pdflatex program, it is part of TeX http://www.tug.org/texlive/acquire-netinstall.html]) 
fi 
AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"]) 
AM_COND_IF([HAVE_DOXYGEN], [AC_CONFIG_FILES([docs/Doxyfile])]) 
AM_COND_IF([HAVE_DOXYGEN], [AC_CONFIG_FILES([docs/Makefile])]) 

在PROJECTDIR/docs目錄

添加兩個文件:Doxyfile.in和Makefile.am

例如用產品的替代變量:

PROJECT_NAME   = @[email protected] 
PROJECT_NUMBER   = @[email protected] 
INPUT     = @[email protected] 

然後作出適當的修改,以其他的doxygen配置字段。

LATEX_OUTPUT   = latex 
PDF_HYPERLINKS   = YES 
USE_PDFLATEX   = YES 

這樣您將生成pdf文件。

的Makefile.am應該很簡單:

if HAVE_DOXYGEN 
directory = $(top_srcdir)/docs/man/man3 

man_MANS = $(directory) 

$(directory): doxyfile.stamp 

doxyfile.stamp: Doxyfile 
    $(DOXYGEN) $^ 
    cd latex && $(MAKE) 
    echo Timestamp > [email protected] 

CLEANFILES = doxyfile.stamp 

all-local: doxyfile.stamp 
clean-local: 
    -rm -rf $(top_srcdir)/docs/man 

endif 

(請確保你尊重的Makefile壓痕而複製此。)

這似乎爲我工作。生成的文檔在docs文件夾中生成。如果我犯了錯誤,請讓我知道。