我想让氧显示源代码版本号作为主页面或标题头的一部分。
目前,我们的代码将版本定义为文本字面量:/*!
* brief Text literal containing the build number portion of the
* ESG Application Version.
*/
static const char build_version_text[] = "105";
我在互联网上搜索了一种方法,从上述语句中获得105进入氧主页(或头)没有运气。
背景
我们有一个构建服务器,更新文本字符串作为夜间构建操作的一部分。该文件被更新,然后签入软件配置管理系统。构建服务器还能够生成文档。我们还希望开发人员能够在他们的工作站检查代码,构建氧原子文档。
我们使用的是氧1.8.11版本。
您要查找的是根据源代码中的值设置PROJECT_NUMBER
配置选项。我不认为这是可以做到的,但是我想达到同样的结果的方法如下。
因为项目版本是在构建脚本运行时更新的,所以让构建脚本生成一个额外的文件,例如Doxyversion
。文件的内容为:
PROJECT_NUMBER = "<versiontext>"
更新主Doxyfile并替换
PROJECT_NUMBER =
@INCLUDE = "<pathToDoxyversion>"
编辑:我能想到的不需要复制版本字符串的解决方案需要将版本字符串从文件解析到环境变量中。然后可以将PROJECT_NUMBER
设置为
PROJECT_NUMBER=$(ENV_VAR)
另一个选择是你可以用
调用氧( cat Doxyfile ; echo "PROJECT_NUMBER=$ENV_VAR" ) | doxygen
这两种解决方案都要求开发人员在生成文档或在脚本中包装整个氧气调用时知道要这样做。
完整的解决方案如下,来自一个真实的例子。
主页在主页(或任何地方)的文档中,使用特殊标记动态替换文本。
主页源:https://github.com/mysql/mysql-server/blob/8.0/sql/mysqld.cc戏
参见${DOXYGEN_GENERATION_DATE}
特殊标记
氧气输入过滤器
在氧配置文件中,为包含特殊标记的文件定义一个输入过滤器。例如,
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
结果Result is athttp://devdocs.no.oracle.com/mysql-server/8.0.0/
参见
所有这些都是我认为应该是一个很好的氧功能的工作。请参阅为此输入的bug#769679(功能请求:doxygen命令展开环境变量)。
https://bugzilla.gnome.org/show_bug.cgi?id=769679