使用 scons 管理版本的最佳实践?
我希望我的 Qt/C++ 应用程序知道它是哪个版本。它应该知道不是从某些配置文件,而是将版本号编译成应用程序二进制文件。版本本身是像“XYZ”这样的字符串,其中X是主版本号,Y是次版本号,Z是SVN下的修订号(或者SVN下的修订号减去版本“XY0”出现时的修订号) 。您认为使用 scons 实现此目的最简单的方法是什么?
I would like my Qt/C++ application to know which version it is. It should know that not from some configuration files, but with version number compiled into application binary. A version itself is string like "X.Y.Z", where X is a major version number, Y is a minor version number and Z is a revision under SVN (or a revision number under SVN minus a revision number when version "X.Y.0" came out). What would you think is the simplest way to accomplish this with scons?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
SCons 具有用于生成文件的
Substfile
和Textfile
构建器。因此,创建一个函数来计算版本(使用 pysvn 或通过调用svn
命令)并使用Substfile
(从文件中获取模板)或Textfile
(仅写入提供的内容)将其输出写入文件。然后编译该文件并将其与应用程序的其余部分链接。该文件应该是一个源文件(不是标头),其内容如下(假设为 C/C++,但相同的技术适用于任何语言):(
以及您想要的任何其他替代格式)和 在某处声明
,只有一个文件将被重新编译,再加上重新链接的应用程序(无论如何它都会发生,因为其他一些源也可能发生变化,对吧)。
SCons has
Substfile
andTextfile
builders for generating files. So create a function to calculate the version (using pysvn or by callingsvn
command) and write it's output to a file usingSubstfile
(takes template from a file) orTextfile
(just writes provided content). Than compile and link that file with the rest of the application.The file should be a source file (not a header) with content like (assuming C/C++, but the same technique would be appropriate with any language):
(and any other alternate formats you want) and declare
somewhere, than only the one file will be recompiled plus the application relinked (which it will anyway, because some other sources probably changed too, right).
以下是来自 [scons-users] 邮件列表的更多答案。
布莱恩·科迪:
加里·奥伯布伦纳:
Here are some more answers that came from [scons-users] mailing list.
Brian Cody:
Gary Oberbrunner: