Possible Duplicate:
How do I embed Mercurial tags into my C/C++ code?




是否可以将Mercurial的版本控制信息添加到仓库正在跟踪的.c和.h文件的第一个注释栏中?

我认为这将涉及向Makefile中添加一些内容,以使源文件中的注释行在每次编译时都替换为最新的版本信息。

我已经从编译器传递了一个#define(例如gcc -D),并将以下内容添加到我的Makefile中:

HGVERSION:= $(shell hg parents --template 'hgid: {node|short}')
CFLAGS += -g -Wall -DHGVERSION="\"${HGVERSION}\""


但这虽然使预处理器变量对我可用,但我不确定这是否有助于在注释块中插入一些文本。

详细地说,我可以看到如何使用HGVERSION实现-ver标志来获取exe来打印其版本信息,但是我看不到如何将该信息转换为源文件的实际文本。

详细地说,我可以看到如何使用HGVERSION来实现某种程序版本信息,例如使用-ver标志或类似方法运行exe时打印版本,但不能以某种方式将信息获取到实际的源文件文本中

我想在每个src文件的顶部添加类似以下内容:

/* some comments
 *
 * version x.y.z
 */


我是在正确的轨道上吗?还是这里需要其他技巧?

最佳答案

可以使用简单的sedawk脚本完成。
使用与众不同的内容启动每个文件,例如:

/*
 * MERCURIAL VERSIONS HERE:
 */


然后编写一个脚本,该脚本将在此行之后添加* version $HGVERSION
以下awk脚本应执行此操作:

awk -vHGVER=$HGVERSION '{print $0} /^  \* MERCURIAL VERSIONS HERE:$/ { print ' * ' HGVER}'


您什么时候运行?
如果将其添加到makefile中,它将在每次编译时运行。如果您添加一些代码以防止两次添加相同版本(grep -v ... && awk ...),则可以。

关于c - 将版本信息写入注释块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8850108/

10-13 09:06
查看更多