在编译时在Windows应用程序中嵌入SVN修订版号

时间:2008-09-30 00:27:52

标签: c++ windows visual-studio svn

我希望我的.exe能够访问我的svn版本的资源字符串。我可以手动输入,但我更喜欢在编译时自动嵌入它。 Visual Studio 2008中是否有这样的功能?

5 个答案:

答案 0 :(得分:21)

我想要一个类似的可用性,发现$ Rev $是不够的,因为只有当文件的修订版被更改时才更新文件(这意味着它必须经过编辑和提交时间:不是我想做的事情相反,我想要一些基于存储库修订号的东西。

对于我现在正在处理的项目,我编写了一个Perl脚本,它从我工作副本的最顶层目录运行svnversion -n,并将最新的修订信息输出到.h文件(我实际上是将它与我工作副本中非版本化文件中保存的版本进行比较,这样我就不会在每次编译时覆盖当前版本信息,但是你选择这样做取决于你。)这个.h文件(或一个数字)我的应用程序代码和资源文件中都引用了文件(如果有必要,具体取决于您的方法)以获取我喜欢的信息。

此脚本作为预构建步骤运行,以便在构建开始之前所有内容都是最新的,并且构建工具会自动重建相应的文件。

答案 1 :(得分:15)

如何使用SubWCRev附带的TortoiseSVN命令行工具。你创建一个包含令牌的模板文件,如$ WCREV $ $ WCDATE $等。然后有一个预生成步骤,在模板文件上运行SubWCRev,以创建送到编译器的实际源文件。

答案 2 :(得分:3)

如果可以解决问题,您可以获得SVN to embed it for you。请参阅该页面上的$ Rev $关键字。

答案 3 :(得分:3)

看一下svn关键字替换here。我通过谷歌找到了另一个问题here

答案 4 :(得分:3)

antik的解决方案是我们使用的解决方案。小心使用环境变量,.h文件确保您可以拥有一个依赖项,这将导致在svn rev number更改时重新编译需要它的任何文件。