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
*/
我是在正确的轨道上吗?还是这里需要其他技巧?
最佳答案
可以使用简单的sed
或awk
脚本完成。
使用与众不同的内容启动每个文件,例如:
/*
* 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/