【问题标题】:generating (and installing) doxygen documentation with autotools使用 autotools 生成(和安装)doxygen 文档
【发布时间】:2012-05-21 09:24:24
【问题描述】:

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

我想知道是否有一种简单的方法可以将生成的 doxygen 文档的安装集成到自动工具中。

我认为构建文档应该很容易。 但是一旦我运行了 doxygen,将生成的(例如).html 文件放入 $(htmldir) 的正确方法是什么?

问题似乎是我不知道(我也不想知道)doxygen 将为我创建哪些文件,所以我无法真正将它们全部枚举到 html_DATA 中

我认为像 'html_DATA=html/*.*' 这样的东西是一个的想法

【问题讨论】:

    标签: doxygen autotools libtool


    【解决方案1】:

    使用一些贡献的 MACRO 可能会更紧凑。在这里,我根据 John Calcote 的 AUTOTOOLS 书 pg 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 文件夹中生成。如果我犯了任何错误,请告诉我。

    【讨论】:

    • $(top_builddir)/docs/man 而不是 $(top_srcdir)/docs/man
    【解决方案2】:

    我使用 Oren Ben-Kiki 的宏,请参阅 http://www.ben-kiki.org/oren/doxample/ 或谷歌它。该脚本以 PDF/HTML/man(可配置)格式创建 doxygen 文档。

    将您生成的帮助文件添加到 Makefile.am 中的 *dist_doc_DATA* 列表中,以便安装它们。

    【讨论】:

    • 很好的答案,但链接已过时。请更新。