首页> 中国专利> 一种编译任务管理方法及编译任务管理装置

一种编译任务管理方法及编译任务管理装置

摘要

本发明的实施例提供一种编译任务管理方法及编译任务管理装置,涉及软件开发技术领域,能够提高编译效率,减少编译过程所占用的硬件资源。具体方案为:获取源代码,所述源代码包括N个源程序的代码;其中N≥2;预编译所述源代码,并将经过预编译的所述源代码保存在保存路径下;对所述保存路径下已保存的所述源代码进行M次编译,输出M个目标程序;其中2≤M≤N。本发明用于软件开发。

著录项

  • 公开/公告号CN105912379A

    专利类型发明专利

  • 公开/公告日2016-08-31

    原文格式PDF

  • 申请/专利权人 青岛海信电器股份有限公司;

    申请/专利号CN201610202860.2

  • 发明设计人 丁达志;赵玉霞;李春华;

    申请日2016-04-01

  • 分类号G06F9/45(20060101);

  • 代理机构11274 北京中博世达专利商标代理有限公司;

  • 代理人申健

  • 地址 266555 山东省青岛市经济技术开发区前湾港路218号

  • 入库时间 2023-06-19 00:22:08

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-07-23

    授权

    授权

  • 2016-09-28

    实质审查的生效 IPC(主分类):G06F9/45 申请日:20160401

    实质审查的生效

  • 2016-08-31

    公开

    公开

说明书

技术领域

本发明涉及软件开发技术领域,尤其涉及一种编译任务管理方法及编译任务管理装置。

背景技术

持续集成(英文全称:Continuous integration)系统用于对源代码进行集成构建,具体包括编译、自动化测试、发布等。其中编译是指利用源代码生成目标程序的过程。

现有的持续集成系统以一次编译过程作为一个独立的编译任务,为每个编译任务分配独立的保存路径,用于保存每个编译任务各自对应的经过预编译的源代码,以备将来再次编译时使用,从而提高编译速度。

结合图1所示的编译过程,在执行一个编译任务时,持续集成系统首先更新并保存源代码,然后为本次编译设置保存路径,将经过预编译的源代码保存在该路径下,最后完成编译,输出目标程序。

在一些软件的开发过程中,待编译的源代码可能包括了多个源程序的代码,多个源程序分别用于生成多个目标程序,也就是说编译器可以对一份源代码进行多次编译,生成多个目标程序。

例如,在开发一款智能电视操作系统的开发过程中,开发人员针对不同硬件平台(例如不同商家的处理器、芯片组等)编写多个操作系统的源程序,将多个源程序的代码保存在一个源文件中。这样,待编译的源代码就包括了多个源程序的代码。在一次编译过程中,编译器根据编译脚本的控制,仅对其中一个源程序进行编译,生成对应的目标程序。经过多次编译后即可得到多个源程序各自对应的目标程序,不同的目标程序用于支持不同的硬件平台。

或者,同一款芯片、同一操作系统的不同机型,可能各自支持不同的功能,例如是否支持WIFI,屏幕分辨率是否相同等,由于部分功能不同也需要对一份源文件做多次编译,以生成不同机型各自对应的目标程序。

结合图2所示,当源代码包括多个源程序的代码时,持续集成系统以一次编译过程作为一个独立的编译任务,每个编译任务中,都需要完成下列步骤:

更新并保存源代码,为本次编译设置保存路径,在该路径下保存经过预编译的源代码,完成编译后输出本次编译对应的目标程序。

因此,在对一份源代码进行多次编译生成多个目标程序的场景中,需要多次分配保存路径、保存经过预编译的源代码,一方面,多次复制保存源代码、分配保存路径、刷新经过预编译的源代码,导致编译过程冗长,因而编译效率低,另一方面,多次复制保存源代码、刷新经过预编译的源代码需要占用大量存储空间,因而编译过程的硬件资源开销大。

发明内容

本申请提供一种编译任务管理方法及编译任务管理装置,能够提高编译效率,减少编译过程所占用的硬件资源。

为达到上述目的,本申请采用如下技术方案:

一方面,提供一种编译任务管理方法,包括:

获取源代码,所述源代码包括N个源程序的代码;其中N≥2;

预编译所述源代码,并将经过预编译的所述源代码保存在保存路径下;

对所述保存路径下已保存的所述源代码进行M次编译,输出M个目标程序;其中2≤M≤N。

另一方面,提供一种编译任务管理装置,用于执行第一方面所提供的编译任务管理方法。

本发明的实施例所提供的编译任务管理方法以及编译任务管理装置,在获取源代码后,将经过预编译的源代码保存在保存路径下,然后对经过预编译的源代码进行多次编译。保存路径不再与单次编译一一对应,而是与源代码一一对应,当对一份源代码进行多次编译时,多次编译共享同一保存路径下所保存的经过预编译的源代码。相比现有技术中需要进行多次保存的方案,本申请的方案中只进行一次保存,简化了编译过程,提高了编译效率,同时减少了为保存数据所占用的存储空间。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为编译过程的说明示意图;

图2为编译过程的另一说明示意图;

图3为本发明的实施例所提供的一种编译任务管理方法流程图;

图4为本发明的实施例所提供的一种编译任务管理装置结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的实施例提供一种编译任务管理方法及编译任务管理装置,应用于源代码包括多个源程序的代码的场景中。

现有技术的一种方案中,为每一次编译分配独立的工作目录,在各自的工作目录下设置保存路径,在保存路径下保存经过预编译的源代码,以备将来再次编译时使用。也就是说,一次编译对应一个工作目录,在每个工作目录下各自保存经过预编译的源代码。

本申请提供的技术方案,以向一个工作目录提交源代码,到完成对该源代码的多次编译,输出多个目标程序的过程作为一次编译任务。在一次编译任务中,为一份源代码(源文件)分配一个工作目录,并设置一个保存路径。特别指出一点,本申请的实施例中所称的保存路径,是指用于保存经过预编译的源代码的目录。一份源代码对应一个保存路径,保存路径可以为工作目录下的一个子目录,也可以是一个独立的目录。

另外,工作目录下可以有一个子目录用于保存预编译之前的源代码,在将经过预编译的源代码保存在保存目录下之后,所保存的预编译之前的源代码可以删除,也可以保留。

将经过预编译的源代码保存在保存目录下之后,可以对经过预编译的源代码进行多次编译,输出多个目标程序,完成该次编译任务。多次编译无需各自设置保存路径或者各自保存经过预编译的源代码,而是共享保存路径下已经保存的经过预编译的源代码。

简而言之,本申请的方案中,一份源代码对应一个保存路径,一次编译任务包括多次编译,多次编译共享保存路径下所保存的数据。

实施例

本发明的实施例提供一种编译任务管理方法,应用于编译任务管理装置,参照图3所示,具体包括以下步骤:

301、编译任务管理装置获取源代码。

编译任务管理装置可以是一个单独的编译器,也可以是持续集成系统等软件开发系统中用于执行编译功能的功能组件。本实施例中以持续集成系统的应用场景为例进行说明。

软件开发过程中,通常需要经过多次集成构建,具体包括源代码编译生成目标程序,对目标程序进行自动化测试,最后得到软件的发布版本。

本实施例所描述的编译任务管理方法,适用于源代码包括N个源程序的代码的应用场景,其中N≥2。通过对源代码进行多次编译,可以得到多个目标程序。可选的,编译任务管理装置获取源代码的具体方式可以是编译任务管理装置接收软件开发人员通过版本控制(英文全称:Revisioncontrol)系统向持续集成系统所提交的待编译的源代码,持续集成系统在接收到源代码之后,根据软件开发人员的设置,将源代码保存在工作目录下的一个子目录下。

302、编译任务管理装置设置保存路径。

保存路径为用于保存经过预编译的源代码的目录,保存路径可以为工作目录下的一个子目录,也可以是一个独立的目录。

步骤302为可选步骤。例如,在创建工作目录之后即执行步骤302,或者在第一次向工作目录提交源代码时,执行步骤302。当再次向工作目录提交源代码时,可使用已有的保存路径,因此无需再次执行步骤302。

303、编译任务管理装置删除保存路径下已保存的数据。

步骤303为可选步骤。

软件开发人员可以向工作目录多次提交源代码,在第i次提交之后,编译任务管理装对第i次提交的源代码进行预编译,并将经过预编译的源代码作为目标文件保存在保存目录下,目标文件的数量通常大于1。当软件开发人员第i+1次向工作目录提交源代码时,保存路径下保存有第i次提交时所保存的目标文件。

可选的,每次向工作目录提交源代码时,均执行步骤303。这种情况下,第i+1次提交时,保存路径下已保存的数据包括第i次提交时在保存路径下所保存的目标文件。

或者,每隔几次向工作目录提交源代码时,执行一次步骤303。例如,若第i次提交时执行了步骤303,则第i+1次、第i+2次提交时不执行步骤303,在第i+3次提交时执行步骤303。这种情况下,第i+3次提交时,保存路径下已保存的数据包括第i次、第i+1次、第i+2次提交时在保存路径下所保存的目标文件。

304、编译任务管理装置预编译源代码,并将经过预编译的源代码保存在保存路径下。

源代码所在的工作目录如果已经设置有保存路径,则步骤301之后就可以直接执行步骤304。如果尚未设置保存路径,则步骤301之后先执行步骤302,再执行步骤304。优选的,步骤304之前先执行步骤303。

在保存路径下所保存的源代码,是指经过预编译的以目标文件形式保存的源代码。

305、编译任务管理装置对保存路径下已保存的源代码进行M次编译,输出M个目标程序。

源代码包括N个源程序的代码,对源代码完成一次编译输出一个目标程序,编译任务管理装置可以根据编译控制脚本的配置,按照一定的顺序完成M次编译,输出M个目标程序,其中2≤M≤N。可选的,编译任务管理装置向版本控制系统输出目标程序,由版本控制系统对目标程序进行统一管理。

完成M次编译之后,本次提交在保存目录下所保存的目标文件,可以保留在保存目录下,在后续向工作目录提交更新的源代码并执行步骤103时,清除。

在对一份源代码进行多次编译生成多个目标程序的场景中,现有技术的方案需要在每次编译时分配保存路径并保存目标文件,因编译过程冗长而导致编译效率低。本申请的方案中一份源代码对应一个保存路径,在保存路径下只需保存一次目标文件,后续的多次编译共享保存路径下的目标文件,无需针对每一次编译分别保存,从而提高了编译效率。

另一方面,现有技术中多次刷新目标文件需要占用大量存储空间,因而编译过程的硬件资源开销大。本申请的方案中,只需保存一次目标文件,从而减少了为保存数据所占用的存储空间。

更进一步地,对于已保存的数据,现有技术中通常是将存入日期靠前或者后期编译中使用频率低的数据清除,腾出保存空间,然后保存更新的目标文件。当源代码有更新时,对更新后的源代码进行编译的过程中,使用的多个目标文件中可能既包括以前保存的目标文件,也包括本次更新的目标文件。多次使用以前保存的目标文件可能会产生累积错误。

存储系统(如磁盘、磁盘控制器、内存等)或文件系统出现的错误也可能导致保存的目标文件本身出现错误,基于错误的目标文件进行以后的多次编译,也可能导致累积错误。本发明的实施例中,编译任务管理装置清除已保存的数据后再保存本次提交的源代码生成的目标文件,在本次保存的目标文件的基础上进行编译,以减少累积错误。

例如,在一种具体的实施方式中,在初次向工作目录提交源代码后,通过预编译生成源代码的目标文件,在保存目录下保存目标文件并对目标文件进行多次编译以生成多个目标程序。当向该工作目录提交新的源代码时,首先清除保存目录下已保存的数据,再保存更新后的源代码生成的目标文件。也就是说,一旦源代码有更新,保存路径下所保存的目标文件对应更新,且编译过程中仅使用本次保存的目标文件,不再使用源代码更新前所保存的目标文件,从而减少累积错误。

本发明的实施例所提供的编译任务管理方法,在获取源代码后,将经过预编译的源代码保存在保存路径下,然后对经过预编译的源代码进行多次编译。保存路径不再与单次编译一一对应,而是与源代码一一对应,当对一份源代码进行多次编译时,多次编译共享同一保存路径下所保存的经过预编译的源代码。相比现有技术中需要进行多次保存的方案,本申请的方案中只进行一次保存,简化了编译过程,提高了编译效率,同时减少了为保存数据所占用的存储空间。另外,当工作目录下的源代码有更新时,首先清除已保存的数据,仅在本次保存的数据的基础上进行编译,从而降低了累积错误发生的可能。

基于图3所对应的实施例,本发明的实施例还提供一种编译任务管理装置,用于执行上述实施例中所描述的编译任务管理方法。结合图4所示,编译任务管理装置40包括处理单元401、存储单元402、接收单元403、输出单元404以及总线405。单元401、存储单元402、接收单元403、输出单元404通过总线405连接并完成相互间的通信。

用于执行本发明方案的程序代码保存在存储单元402中,并由处理单元401来控制执行。

存储单元402可以包括易失性存储单元(英文全称:volatile memory),例如随机存取存储单元(英文全称:random-access memory,英文简称:RAM)。存储单元也可以包括非易失性存储单元(英文全称:non-volatilememory),例如只读存储单元(英文全称:read-only memory,英文简称:ROM),快闪存储单元(英文全称:flash memory),硬盘(英文全称:hard disk drive,英文简称:HDD)或固态硬盘(英文全称:solid-state drive,英文简称:SSD)。存储单元402还可以包括上述种类的存储单元的组合。

处理单元401可以是中央处理单元(全称:Central Processing Unit,简称:CPU),或者CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(英文全称:application-specific integrated circuit,英文简称:ASIC),可编程逻辑器件(英文全称:programmable logic device,英文简称:PLD)或其任意组合。

处理单元401,用于调用存储单元402中的程序代码,在一种可能的实施方式中,当上述程序被处理单元401执行时,实现如下功能:

接收单元403,用于获取源代码,源代码包括N个源程序的代码。其中N≥2。

处理单元401,用于预编译源代码,并将经过预编译的源代码按照保存路径保存在存储单元402中;

处理单元401,还用于对保存路径下已保存已保存的源代码进行M次编译,输出M个目标程序。其中2≤M≤N。

可选的,处理单元401,还用于设置保存路径。

可选的,处理单元401,还用于删除存储单元402中保存路径下已保存的数据。

本发明的实施例所提供的编译任务管理装置,在获取源代码后,将经过预编译的源代码保存在保存路径下,然后对经过预编译的源代码进行多次编译。保存路径不再与单次编译一一对应,而是与源代码一一对应,当对一份源代码进行多次编译时,多次编译共享同一保存路径下所保存的经过预编译的源代码。相比现有技术中需要进行多次保存的方案,本申请的方案中只进行一次保存,简化了编译过程,提高了编译效率,同时减少了为保存数据所占用的存储空间。另外,当工作目录下的源代码有更新时,首先清除已保存的数据,仅在本次保存的数据的基础上进行编译,从而降低了累积错误发生的可能。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号