我有一些 C++ 代码库,用 doxygen 记录,并用 GNU make 构建。版本信息集中在makefile中,我有类似的东西:
版本=1.2.3.4
在我的 makefile 中,CFLAGS 添加了以下定义:
CFLAGS += -DAPP_VERSION=$(VERSION)
这使我能够在代码中获取版本,如下所示:
#define STR_EXPAND(tok) #tok
#define STR(tok) STR_EXPAND(tok)
int main()
{
cout << "software version is << STR(APP_VERSION) << endl;
}
现在,我想要在 doxygen 生成的 html 文件中有这个:
当前软件版本为 1.2.3.4
我设法将makefile变量导出到doxygen配置文件中:(编辑:doxygen是从makefile调用的,通过'make-doc'目标)
预定义 = APP_VERSION=$(VERSION)
但是,如果我在 doxygen \mainpage 命令中尝试这样的事情,它会失败,因为(当然)宏名称不会在评论中扩展......
/**
\mainpage this is the doc
Current version is $(APP_VERSION) -- or -- ... is APP_VERSION
*/
问题
您知道在 doxygen 注释中“扩展”该宏的方法吗?这可以通过对包含 makefile 中注释的文件进行一些 sed 处理来完成,但也许这可以直接用 doxygen 解决?
其他项目如何处理版本控制(除了 VCS 提供的自动版本控制工具,我的意思是),版本 ID 在文件中是唯一定义的,因此它可以被软件构建系统和文档构建系统获取。
相关:如何显示定义的值