【发布时间】:2012-05-28 09:49:15
【问题描述】:
我有一些 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 配置文件中: (edit:doxygen 是从 makefile 中调用的,通过一个 'make-doc' 目标)
预定义 = APP_VERSION=$(VERSION)
但是,如果我在 doxygen \mainpage 命令中尝试这样的操作,它会失败,因为(当然)宏名称不会在 cmets 中扩展...
/**
\mainpage this is the doc
Current version is $(APP_VERSION) -- or -- ... is APP_VERSION
*/
问题
您知道在 doxygen cmets 中“扩展”该宏的方法吗?这可以通过对 makefile 中包含注释的文件进行一些 sed 处理来完成,但也许这可以直接用 doxygen 解决?
其他项目如何处理版本控制(除了 VCS 提供的自动版本控制工具,我的意思是),版本 ID 在文件中是唯一定义的,因此可以通过软件构建系统和文档构建系统。
【问题讨论】: