使用autotools生成(和安装)doxygen文档

使用autotools生成(和安装)doxygen文档,doxygen,autotools,libtool,Doxygen,Autotools,Libtool,我正在编写一个库(使用libtools),其中所有API文档都是使用doxygen完成的 我想知道是否有一种简单的方法可以将生成的doxygen文档安装到autotools中 我认为构建文档应该足够简单。 但是一旦我运行了doxygen,将生成的(例如)html文件转换成$(htmldir)的正确方法是什么 问题似乎是我不知道(也不想知道)doxygen将为我创建哪些文件,因此我无法将它们全部枚举到html\u数据中 我认为类似于“html_DATA=html/*.*”的想法是一个不好的想法虽然

我正在编写一个库(使用libtools),其中所有API文档都是使用doxygen完成的

我想知道是否有一种简单的方法可以将生成的doxygen文档安装到autotools中

我认为构建文档应该足够简单。 但是一旦我运行了doxygen,将生成的(例如)html文件转换成$(htmldir)的正确方法是什么

问题似乎是我不知道(也不想知道)doxygen将为我创建哪些文件,因此我无法将它们全部枚举到html\u数据中


我认为类似于“html_DATA=html/*.*”的想法是一个不好的想法虽然我自己对自动工具没有太多经验,但对这个邮件线程提出了一些建议,这些建议可能有用:

我使用Oren Ben Kiki的宏,请参见或用谷歌搜索它。该脚本以PDF/HTML/man(可配置)格式创建doxygen文档


将生成的帮助文件添加到Makefile.am中的*dist\u doc\u DATA*列表中,以便安装它们。

使用一些贡献的宏可能更紧凑。在这里,我根据约翰·卡尔科特(John Calcote)第246页的《自动工具》(AUTOTOOLS)一书中的示例找到了一个简单的方法

将以下内容添加到正好位于

AC_CONFIG_FILES([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缩进。)


这似乎对我有用。生成的文档将在“文档”文件夹中生成。如果我有任何错误,请告诉我。

谢谢你的提示。您代码中的建议似乎与我的“html_DATA=html/*.*”相同,因此我从一开始就处于“正确”的轨道上。上面的链接在我的浏览器中是一个空白页。如果链接到外部内容,请在此处也包含答案。我的链接已关闭。doxample现在位于github:,它在autoconf archive
$(top\u builddir)/docs/man
中提供,而不是在
$(top\u srcdir)/docs/man
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