基于脚本的软件版本管理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/simonyucsdy/article/details/79619592

最近在公司的嵌入式项目中,需要完成一个项目构建号自增的功能,及每次构建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和+=之间不能有空格。

扫描二维码关注公众号,回复: 3137603 查看本文章

【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******")
	}
}

【构建】

待更新

猜你喜欢

转载自blog.csdn.net/simonyucsdy/article/details/79619592