我希望我的Qt/C++应用程序知道它是哪个版本.它应该知道不是来自某些配置文件,而是将版本号编译成应用程序二进制文件.版本本身就是字符串,如"XYZ",其中X是主要版本号,Y是次要版本号,Z是SVN下的修订版(或SVN下的版本号减去版本"XY0"出来时的版本号) .您认为用scons实现这一目标的最简单方法是什么?
SCons的拥有Substfile
和Textfile
生成文件的建设者.因此,创建一个函数来计算版本(使用pysvn或通过调用svn
命令)并使用Substfile
(从文件中获取模板)或Textfile
(仅写入提供的内容)将其输出写入文件.比使用应用程序的其余部分编译和链接该文件.
该文件应该是一个内容类似的源文件(不是标题)(假设使用C/C++,但相同的技术适用于任何语言):
char *VERSION = "X.Y.Z";
Run Code Online (Sandbox Code Playgroud)
(以及您想要的任何其他替代格式)并声明
extern char *VERSION;
Run Code Online (Sandbox Code Playgroud)
在某个地方,只有一个文件将被重新编译加上应用程序重新链接(无论如何,因为其他一些来源可能也会改变,对吧).