展开宏内doxygen注释打印软件版本 [英] Expand macro inside doxygen comment for printing out software version
问题描述
我有一些C ++代码库,用doxygen记录,并使用GNU make构建。
版本信息集中在makefile中,其中有以下内容:
VERSION = 1.2.3.4
在我的makefile中,CFLAGS添加以下定义:
CFLAGS + = -DAPP_VERSION = $(VERSION)
这使我能够获取代码中的版本,如下所示:
#define STR_EXPAND(tok)#tok
#define STR(tok)STR_EXPAND(tok)
int main
{
cout<< 软件版本为 }
现在,我想要的是在doxygen生成的html文件中:
当前版本的软件是1.2.3.4
我设法导出makefile变量到doxygen配置文件中:
( edit :doxygen是从makefile通过make-doc目标调用的)
PREDEFINED = APP_VERSION = $(VERSION)
但是,如果我尝试在doxygen \mainpage命令这样,它失败,因为(当然),宏名称不在评论中展开...
/ **
\mainpage这是doc
Current版本是$(APP_VERSION) - 或 - ...是APP_VERSION
* /
问题
-
您知道如何在doxygen评论中展开 ?这可以通过对在makefile中包含注释的文件进行一些sed处理来完成,但也许这可以直接用doxygen解决?
-
句柄版本控制(除了VCS提供的自动版本控制工具外,我的意思是),版本ID在文件中是唯一定义的,因此它可以通过软件构建系统和文档构建系统来获取。
li>
相关:如何显示定义的值< a>
您需要使用make的export功能,即一个非常简单的make文件
project_name = FooBar
export project_name
all:
doxygen Doxyfile
将允许您在C ++中使用以下注释
/ *! \mainpage项目$(project_name)Lorem ipsum dolor
我可以看到这成为一个PITA一套出口,但它是一个相当简单的方法来做。或者,您可以运行doxygen从一个单独的BASH脚本中的所有导出,以避免污染您的Makefile太多。
I have some C++ code base, documented with doxygen, and build with GNU make. Version information is centralized in makefile, where I have something like:
VERSION=1.2.3.4
In my makefile, the CFLAGS add the following define:
CFLAGS += -DAPP_VERSION=$(VERSION)
This enables me to get the version in code, like this:
#define STR_EXPAND(tok) #tok #define STR(tok) STR_EXPAND(tok) int main() { cout << "software version is << STR(APP_VERSION) << endl; }
Now, what I would like is to have this in the doxygen-produced html files:
Current version of software is 1.2.3.4
I managed to export the makefile variable into the doxygen configuration file with: (edit: doxygen is called from makefile, through a 'make-doc' target)
PREDEFINED = APP_VERSION=$(VERSION)
But then, if I try in the doxygen \mainpage command something like this, it fails, because (of course), macro names don't get expanded in comments...
/** \mainpage this is the doc Current version is $(APP_VERSION) -- or -- ... is APP_VERSION */
Questions
Do you know of a way to "expand" that macro in the doxygen comments ? This could be done by some sed processing on the file holding the comment in the makefile, but maybe this can be solved directly with doxygen ?
How do other projects handle versioning (besides automatic versioning tool that VCS provide, I mean), in a way that the version id is uniquely defined in a file, so it can be fetched both by software build system and documentation build system.
Related: How to display a defined value
You need to use the "export" functionality of make ie a very simple make file with
project_name=FooBar
export project_name
all:
doxygen Doxyfile
Will allow you to use the following comments in C++
/*! \mainpage Project $(project_name) Lorem ipsum dolor
I can see this becoming a PITA with a large set of exports but it's a fairly simple way to do it. Alternatively you could run doxygen from a separate BASH script with all the exports in it to avoid polluting your Makefile too much.
这篇关于展开宏内doxygen注释打印软件版本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!