我可以将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
*/
我是在正确的轨道上还是在这里需要一些其他技术?
答案 0 :(得分:1)
可以使用简单的sed
或awk
脚本完成
使用与众不同的内容启动每个文件,例如:
/*
* MERCURIAL VERSIONS HERE:
*/
然后编写一个脚本,在此行之后添加* version $HGVERSION
以下awk
脚本应该这样做:
awk -vHGVER=$HGVERSION '{print $0} /^ \* MERCURIAL VERSIONS HERE:$/ { print ' * ' HGVER}'
你什么时候运行它?
如果将它添加到makefile,它将在每次编译时运行。如果您添加一些代码以防止两次添加相同版本(grep -v ... && awk ...
)。