uml*_*ute 4 doxygen autotools libtool
我正在编写一个库(使用 libtools),其中所有 API 文档都是使用 doxygen 完成的。
我想知道是否有一种简单的方法可以将生成的 doxygen 文档的安装集成到 autotools 中。
我认为构建文档应该很容易。但是一旦我运行 doxygen,将生成的(例如).html 文件放入 $(htmldir) 的正确方法是什么?
问题似乎是我不知道(我也不想知道)doxygen 将为我创建哪些文件,所以我无法真正将它们全部枚举到 html_DATA 中
我认为像“html_DATA=html/*.*”这样的东西是个坏主意
使用一些贡献的宏可能会更紧凑。在这里,我根据 John Calcote 的 AUTOTOOLS 书籍第 246 页中的示例找出了一个简单的方法。
将以下内容添加到configure.ac的正上方
AC_CONFIG_FILES([Makefile
Run Code Online (Sandbox Code Playgroud)
线
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])])
Run Code Online (Sandbox Code Playgroud)
在 PROJECTDIR/docs 目录中
添加两个文件:Doxyfile.in 和 Makefile.am
使用替换变量例如:
PROJECT_NAME = @PACKAGE_NAME@
PROJECT_NUMBER = @PACKAGE_VERSION@
INPUT = @top_srcdir@
Run Code Online (Sandbox Code Playgroud)
然后对其他doxygen配置字段进行适当修改。
LATEX_OUTPUT = latex
PDF_HYPERLINKS = YES
USE_PDFLATEX = YES
Run Code Online (Sandbox Code Playgroud)
这样你就会生成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
Run Code Online (Sandbox Code Playgroud)
(复制此文件时请确保遵守 Makefile 缩进。)
这似乎对我有用。生成的文档在 docs 文件夹中生成。如果我犯了任何错误,请告诉我。