keb*_*ebs 7 c++ doxygen makefile
我有一些C++代码库,用doxygen记录,并使用GNU make构建.版本信息集中在makefile中,我有类似的东西:
VERSION = 1.2.3.4
在我的makefile中,CFLAGS添加以下定义:
CFLAGS + = -DAPP_VERSION = $(版本)
这使我能够在代码中获取版本,如下所示:
#define STR_EXPAND(tok) #tok
#define STR(tok) STR_EXPAND(tok)
int main()
{
cout << "software version is << STR(APP_VERSION) << endl;
}
Run Code Online (Sandbox Code Playgroud)
现在,我想要的是在doxygen生成的html文件中有这个:
当前版本的软件是1.2.3.4
我设法将makefile变量导出到doxygen配置文件中:( 编辑:从makefile调用doxygen,通过'make-doc'目标)
PREDEFINED = APP_VERSION = $(版本)
但是,如果我尝试使用doxygen\mainpage这样的命令,它会失败,因为(当然),宏名称不会在评论中扩展...
/**
\mainpage this is the doc
Current version is $(APP_VERSION) -- or -- ... is APP_VERSION
*/
Run Code Online (Sandbox Code Playgroud)
问题
你知道在doxygen评论中"扩展"这个宏的方法吗?这可以通过对makefile中保存注释的文件进行一些sed处理来完成,但是这可以直接用doxygen解决吗?
其他项目如何处理版本控制(除了VCS提供的自动版本控制工具,我的意思),以版本ID在文件中唯一定义的方式,因此它可以由软件构建系统和文档构建系统获取.
相关:如何显示定义的值
您需要使用 make 的“导出”功能,即一个非常简单的 make 文件
project_name=FooBar
export project_name
all:
doxygen Doxyfile
Run Code Online (Sandbox Code Playgroud)
将允许您在 C++ 中使用以下注释
/*! \mainpage Project $(project_name) Lorem ipsum dolor
Run Code Online (Sandbox Code Playgroud)
我可以看到这将成为具有大量出口的 PITA,但这是一种相当简单的方法。或者,您可以从单独的 BASH 脚本运行 doxygen,其中包含所有导出,以避免过多污染您的 Makefile。
| 归档时间: |
|
| 查看次数: |
2489 次 |
| 最近记录: |