Doxygen:输出版本号

时间:2016-09-19 20:40:54

标签: versioning doxygen

我想让Doxygen显示源代码版本号作为主页或标题标题的一部分。

目前,我们的代码的版本定义为文本文字:

/*!
 *  \brief  Text literal containing the build number portion of the
 *              ESG Application Version.
 */
static const char   build_version_text[] = "105";

我在互联网上搜索了一种方法,将上述语句中的105从Doxygen主页(或标题)中取出,但没有运气。

背景
我们有一个构建服务器,它在每晚构建操作中更新文本字符串。文件已更新,然后检入软件配置管理系统。构建服务器还能够生成文档。我们还希望让开发人员能够查看代码,在他们的工作站上构建Doxygen文档。

我们正在使用Doxygen版本1.8.11。

2 个答案:

答案 0 :(得分:1)

您要寻找的是根据源中的值设置PROJECT_NUMBER配置选项。我不认为这可以做到,但我将如何实现相同的结果如下。

由于项目版本在构建脚本运行时更新,因此构建脚本会生成一个额外的文件,例如Doxyversion。将文件的内容设为:

PROJECT_NUMBER = "<versiontext>"

更新主要的Doxyfile并替换

PROJECT_NUMBER =

@INCLUDE = "<pathToDoxyversion>"

编辑:

我能想到的解决方案不需要复制版本字符串,需要将文件中的版本字符串解析为环境变量。然后,您可以将PROJECT_NUMBER设置为

PROJECT_NUMBER=$(ENV_VAR)

另一个选择是你可以用

调用doxygen
( cat Doxyfile ; echo "PROJECT_NUMBER=$ENV_VAR" ) | doxygen

两种解决方案都需要开发人员在生成文档时将其知道,或者将整个doxygen调用包装在脚本中。潜在的可移植性问题。

答案 1 :(得分:0)

下面的完整解决方案,来自一个真实的例子。

主页

在主页的文档中(或任何地方,真的),使用特殊标记来动态替换文本。

主页来源: https://github.com/mysql/mysql-server/blob/8.0/sql/mysqld.cc#L22

查看特殊的${DOXYGEN_GENERATION_DATE}标记

Doxygen输入过滤器

在doxygen配置文件中,为包含特殊标记的文件定义输入过滤器。例如,

FILTER_PATTERNS = "*/sql/mysqld.cc=./doxygen-filter-mysqld"

doxygen-filter-mysqld脚本实施为:

  • 找到要替换的动态值(在您的情况下,解析build_version_text的值)
  • 使用值
  • 替换(sed)特殊标记
  • 将结果输出到stdout

例如:

CMD1="s/\\\${DOXYGEN_GENERATION_DATE}/"`date -I`"/g"
...
sed -e ${CMD1} -e ${CMD2} -e ${CMD3} $1

结果

结果是 http://devdocs.no.oracle.com/mysql-server/8.0.0/

另见

所有这些都是一个解决方案,我认为应该是一个很好的Doxygen功能。 请参阅为此输入的错误#769679(功能请求:doxygen命令以扩展环境变量)。

https://bugzilla.gnome.org/show_bug.cgi?id=769679