最近在公司的嵌入式项目中,需要完成一个项目构建号自增的功能,及每次构建Debug版本应用程序时,构建号自动增加1,公司的标准为,软件版本V1.1.0.132(V X.Y.Z.B),X为大的功能变动或者结构重新设计构建时发生变动,Y为新增功能或者功能更改时的发布,Z为bug修复发布的小版本,B即为每次构建号,每次构建debug版本时构建号自动加一(而发布release版本时不用加一),而且还要考虑到跨平台的情况(当项目在ARM平台下开发编译时考虑构建号自增,在X86平台下不自增)。
【开发环境】
软件的开发环境为QtCreator+Ubuntu(或者Windows),因此软件发布或构建时要区分平台。
【设计策略】
在不同的平台下或不同的构建配置下,【项目】-【构建设置】-【构建步骤】-【qmake详细配置】-【额外的参数】中,根据平台和配置分别编辑【额外的参数】
ARM+Release: CONFIG+=ARM CONFIG+=release CONFIG-=debug
ARM+Debug: CONFIG+=ARM CONFIG-=release CONDIG+=debug
X86+Release: CONFIG+=release CONFIG-=debug
X86+Debug: CONFIG-=release CONFIG+=debug
注意:CONFIG和+=之间不能有空格。
【qmake】
QtCreator的编译步骤分为qmake+make,其他的可以自定义构建步骤,自己通过脚本定义构建行为,器中qmake主要的责任是生成.pro文件并根据项目结构产生MakeFile作为下一步make的基础,因为make永远是项目构建的核心(当然qmake也是必不可少的,除非你有时间和精力自己编写MakeFile!)这里要特别指出的重要一点:.pro文件也是个灵活的文件,可以加进去很多东西。
【.pro文件的配置】
contains(CONFIG,ARM){
contains(CONFIG,release){
message("******ARM+release*****");
updateBuildNumber.target=buildnumber
updateBuildNumber.depends=FORCE
updateBuildNumber.commands=$$PWD/script/updatebuildnumber.sh $$PWD
updateVersion.target=version.h
updateVersion.depends=buildnumber
updateVersion.commands=$$PWD/script/updateversion.sh $$PWD
PRE_TARGETDEPS += buildnumber version.h
QMAKE_EXTRA_TARGET += updateBuildNumber updateVersion
}
else{
message("******ARM+debug******");
}
}
else{
contains(CONFIG,release){
message("******X86+release******")
}
else{
message("*******X86+debug******")
}
}
contains(CONFIG,release){
message("******ARM+release*****");
updateBuildNumber.target=buildnumber
updateBuildNumber.depends=FORCE
updateBuildNumber.commands=$$PWD/script/updatebuildnumber.sh $$PWD
updateVersion.target=version.h
updateVersion.depends=buildnumber
updateVersion.commands=$$PWD/script/updateversion.sh $$PWD
PRE_TARGETDEPS += buildnumber version.h
QMAKE_EXTRA_TARGET += updateBuildNumber updateVersion
}
else{
message("******ARM+debug******");
}
}
else{
contains(CONFIG,release){
message("******X86+release******")
}
else{
message("*******X86+debug******")
}
}
【构建】
待更新