【发布时间】:2010-09-14 03:47:13
【问题描述】:
我希望我的 .exe 能够使用我的 svn 版本访问资源字符串。我可以手动输入,但我更喜欢在编译时自动嵌入。 Visual Studio 2008 有这样的功能吗?
【问题讨论】:
标签: c++ windows visual-studio svn
我希望我的 .exe 能够使用我的 svn 版本访问资源字符串。我可以手动输入,但我更喜欢在编译时自动嵌入。 Visual Studio 2008 有这样的功能吗?
【问题讨论】:
标签: c++ windows visual-studio svn
如何使用SubWCRev 附带的命令行工具TortoiseSVN。您创建一个模板文件,其中包含 $WCREV$ $WCDATE$ 等标记。然后有一个预构建步骤,在您的模板文件上运行 SubWCRev 以创建馈送到编译器的实际源文件。
【讨论】:
我想要类似的可用性,但发现 $Rev$ 是不够的,因为它仅在文件的修订版本发生更改时才针对文件进行更新(这意味着必须非常及时地对其进行编辑和提交:这不是我想做的事情.) 相反,我想要一些基于存储库修订号的东西。
对于我现在正在进行的项目,我编写了一个 Perl 脚本,该脚本从我的工作副本的最顶层目录运行 svnversion -n 并将最新的修订信息输出到一个 .h 文件(我实际上比较了它到我的工作副本中的非版本控制文件中保存的版本,这样我就不会在每次编译时覆盖当前的修订信息,但您是否选择这样做取决于您。)这个 .h 文件(或许多文件如有必要,取决于您的方法)在我的应用程序代码和资源文件中都被引用以获取我想要的信息。
此脚本作为预构建步骤运行,以便在构建开始之前一切都是最新的,并且您的构建工具会自动重新构建适当的文件。
【讨论】:
svnversion 输出的值在最后一组字符中包含“M”时。这将允许您在提交后重建您的项目,而无需更改版本号。 (有关其输出格式的说明,请参阅the svnversion documentation。)
antik 的解决方案是我们使用的解决方案。小心使用环境变量,.h 文件确保您可以拥有一个依赖项,这将导致任何需要它的文件在 svn rev 号更改时重新编译。
【讨论】:
您可以联系SVN to embed it for you,如果这样可以解决问题。请参阅该页面上的 $Rev$ 关键字。
【讨论】: