我希望我的 Qt/C++ 应用程序知道它是哪个版本。它应该知道不是来自一些配置文件,而是编译成应用程序二进制文件的版本号。版本本身就是像“X.Y.Z”这样的字符串,其中X是主版本号,Y是次版本号,Z是SVN下的修订版(或者SVN下的修订号减去版本号“X.Y.0”出来时的修订号) ).您认为使用 scons 实现此目的的最简单方法是什么?
最佳答案
SCons 具有用于生成文件的Substfile
和Textfile
构建器。因此,创建一个函数来计算版本(使用 pysvn 或通过调用 svn
命令)并使用 Substfile
(从文件中获取模板)将其输出写入文件或Textfile
(只写提供的内容)。然后编译该文件并将其与应用程序的其余部分链接。
该文件应该是一个源文件(不是头文件),其内容如下(假设是 C/C++,但同样的技术适用于任何语言):
char *VERSION = "X.Y.Z";
(以及您想要的任何其他替代格式)并声明
extern char *VERSION;
在某个地方,只有一个文件会被重新编译并重新链接应用程序(无论如何它都会重新链接,因为其他一些源可能也发生了变化,对吧)。
关于c++ - 使用 scons 管理版本的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5269102/