Qt版本增量

时间:2015-07-05 22:09:01

标签: c++ qt qmake

我正在使用批处理文件来增加最后一个版本号。我将其设置为.pro文件中的变量,然后在我的main.cpp中尝试将Qstring设置为版本号,然后使用QDebug查看该数字是否正确。到目前为止,批处理文件没有被调用,将QString设置为版本号时的最后args是"太少"带有警告信息。

.pro文件存在问题:

VERSION_MAJOR = 1
VERSION_MINOR = 0
VERSION_BUILD = $$(autoincrement.bat)

VERSION = $${VERSION_MAJOR}.$${VERSION_MINOR}.$${VERSION_BUILD}

DEFINES += "VERSION_MAJOR=$$VERSION_MAJOR"\
       "VERSION_MINOR=$$VERSION_MINOR"\
       "VERSION_BUILD=$${VERSION_BUILD}"

main.cpp

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QString version = QString("%1.%2.%3").arg(VERSION_MAJOR)
            .arg(VERSION_MINOR).arg(VERSION_BUILD);
    QApplication::setApplicationVersion(version);
    qDebug() << version;
    NewsBulletin w;
    w.show();

    return a.exec();
}

2 个答案:

答案 0 :(得分:4)

首先,调用外部程序的qmake语法是

<cfloop collection="#qEvents#" item="ii">
<cfoutput>
#ii# - #qEvents[ii]#
</cfoutput>
</cfloop>

您正在做的是获取名为VARIABLE=$$system(autoincrement.bat) 的环境变量的值。

其次,您的代码仍然存在

的问题
  • 除非autoincrement.bat文件发生更改,否则qmake将不会自动在其上运行
  • 除非源文件也发生变化,否则不会重建

因此,通过这种方式实现版本修改和重新编译代码非常困难。与其他构建系统不同,qmake不支持这种特殊的&#34;变量并导致依赖代码需要重新编译的变量。你的第二种方法(生成一个version.h文件)肯定更好。

答案 1 :(得分:2)

这是我为Windows的每个版本进行迭代的解决方案(绝对更喜欢Bash):

  1. 创建一个包含以下内容的version.bat

    @echo off 
    set /p var= <version.txt 
    set /a var= %var%+1 
    echo %var% >version.txt
    break >version.h
    echo #define VERSION_MAJOR 1 >version.h
    echo #define VERSION_MINOR 0 >>version.h
    echo #define VERSION_BUILD %var% >>version.h
    echo %var%
    

    运行一次以创建其他文件。

  2. 接下来,转到qt中的项目并添加构建步骤以进行调试和运行。
  3. 将批处理文件放入命令中,然后转到批处理工作目录所在的.pro文件夹。
  4. 接下来,将version.h文件添加到项目中。
  5. 最后,您必须在要使用版本号的每个文件中包含version.h