程序中一般会加入程序的版本信息,用“-v”来查看。
有时候还会加入编译时间,这个比较好实现,使用__TIME__和__DATE__宏就可以了,程序的大版本号一般都是手动写的。
出于某种需要,我希望在程序中获取到编译时svn的版本号,查了写资料,有说用svn prop来做的,也有说用svn hook来做的,我觉得这个太复杂,而且是在每次提交都做修改,没必要。
于是乎,我想到也用宏来做。
gcc里可以用“-D”来定义宏,用它来定义一个宏,值为svn版本号就好了。
-DSVN=xxxx
xxxx怎么获取呢?svn info里就有了,弄出来就行了
svn info | grep Revision | cut -d " " -f 2
然后
-DSVN=·svn info | grep Revision | cut -d " " -f 2·
把它加到Makefile.am里去,搞定。
啊, 这个好…
我们的项目刚改过版本控制, 从svn迁移到hg上, 不过做法只是加一个记版本号的文件, 每次编完了写一下.