有时我们想在编译工程时,使用 svn 的源代码版本号来作为 build 的一个子版本号;或者只是为了识别某个发布版本,与源代码对应起来。
在 Linux 下面有很多的解决方案,使用 svn 工具和一些 shell 命令再加上 -D 选项就可以达到上述目的。
在 Windows 下,使用 Qt Creator 作为开发环境,使用 TortoiseSVN 作为代码管理的客户端工具,该如何实现这个功能呢?
其实主要有两个步骤:一步是如何自动获取 svn 版本号;另一步是如何使用这个版本号,让其自动进入编译过程,在生成的可执行程序中可以访问。
自动获取 svn 控制的源码版本号
TortoiseSVN 有个工具 SubWCRev 可以获取到 working copy 的版本号,具体命令细节可以使用 SubWCRev /? 来查看。
下面是我写的一个 Windows 脚本,自动干这个事情。
@echo off
for /f "delims=" %%t in ('SubWcRev %CD% -f ^| findstr "Updated to revision"') do set version=%%t
if "%version%" equ "" (
for /f "delims=" %%t in ('SubWcRev %CD% -f ^| findstr "Mixed revision range"') do set version&#