Qt版本递增
Qt Version Incrementing
我正在使用一个批处理文件来增加上一个版本号。我在.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();
}
首先,调用外部程序的qmake语法是
VARIABLE=$$system(autoincrement.bat)
相反,您要做的是获取一个名为autoincrement.bat
的环境变量的值。
第二,你的代码仍然会有的问题
- 除非
pro
文件发生更改,否则qmake不会自动在其上运行 - 除非源文件也发生更改,否则不会重新生成它们
因此,通过这种方式,实际上很难进行版本提升并重新编译代码。与其他构建系统不同,qmake不支持这种"特殊"变量,这些变量会发生变化,导致依赖代码需要重新编译。您的第二种方法(生成一个version.h文件(肯定更好。
以下是我为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
相关文章:
- Qt版本应该在其他计算机上运行吗?
- 在Visual Studio中单实例Qt应用程序版本5.11.1中,在所有其他窗口的顶部打开Qt MainWindow
- 发布版本中的 Qt 隐形组合框(但不在调试版本中)
- Protobuf版本与Qt冲突
- Qt 应用程序中与Qt版本相关的运行时错误
- 如何在Mac OS的发布版本中包含Qt库?
- Qt Debugger在Mac上使用错误的python版本
- VS2015中内置的程序的发布版本与Qt运行然后关闭没有错误?
- 用静态版本的QT编译时,文件对话框崩溃
- CentOS7中的QT版本
- 在应用程序中加载QT LIB(不同的版本)
- 无法使用 Visual Studio 2010 和 Qt 版本 4.8.0 创建"Qt Gui Application"
- 如何在QT Creator开源版本中为嵌入式Linux交叉编译qt
- Qt 网络引擎调试版本崩溃
- QT版本检查和Qoverload未在范围中定义
- Qt 和 Windows 可执行版本信息
- 没有配置文件来制作QT的静态版本
- QT 5.12 Mac OS X版本号码错误
- 无法运行Qt C++发布版本。 'The procedure entry point could not be located'
- 使用Visual Studio 2013构建QT 5.2.1的静态版本