使用Autotools生成(和安装)Doxygen文档

4
我正在编写一份库(使用 libtools),其中所有的 API 文档都是使用 doxygen 完成的。
我想知道是否有一种简单的方法将生成的 doxygen 文档集成到 Autotools 中进行安装。
我觉得构建文档应该很容易。但一旦运行了 doxygen,如何将生成的(例如).html 文件正确地放置在 $(htmldir) 中呢?
问题似乎在于我不知道(也不想知道)doxygen 将会为我创建哪些文件,因此我不能真正列举它们并将其全部放置在 html_DATA 中。
我想类似 'html_DATA=html/*.*' 的东西是一个不好的主意。
2个回答

5

如果你想让内容更加简洁易懂,可以使用一些已经开发好的宏定义。在这里,我提供了一种基于John Calcote所著《AUTOTOOLS》一书中第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           = @PACKAGE_NAME@
PROJECT_NUMBER         = @PACKAGE_VERSION@
INPUT                  = @top_srcdir@

然后对其他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 > $@

CLEANFILES = doxyfile.stamp

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

endif

(在复制时请确保尊重 Makefile 缩进。)
这对我来说似乎已经起作用了。生成的文档位于 docs 文件夹中。如果我有任何错误,请告诉我。

1
$(top_builddir)/docs/man instead of $(top_srcdir)/docs/man - Darren Ng

1
我使用Oren Ben-Kiki的宏,参见GitHubGNU autotools或在Google上搜索。该脚本可以生成Doxygen文档,格式可配置为PDF/HTML/man。
将生成的帮助文件添加到Makefile.am中的dist_doc_DATA列表中,以便安装它们。

回答不错,但链接已过期,请更新。 - TFuto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接