将版本信息写入注释块

时间:2012-01-13 11:48:51

标签: c version-control mercurial

  

可能重复:
  How do I embed Mercurial tags into my C/C++ code?

我可以将Mercurial中的版本控制信息添加到repo跟踪的.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
 */

我是在正确的轨道上还是在这里需要一些其他技术?

1 个答案:

答案 0 :(得分:1)

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

/*
 * MERCURIAL VERSIONS HERE:
 */

然后编写一个脚本,在此行之后添加* version $HGVERSION 以下awk脚本应该这样做:

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

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

,则可以