2012-05-21 127 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文件夹中生成。如果我犯了错误,请让我知道。