我正在使用批处理文件来增加最后一个版本号。我将其设置为.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();
}
答案 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):
创建一个包含以下内容的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%
运行一次以创建其他文件。
qt
中的项目并添加构建步骤以进行调试和运行。 .pro
文件夹。 version.h
文件添加到项目中。 version.h
。