一種編譯任務(wù)管理方法及編譯任務(wù)管理裝置的制造方法
【專利摘要】本發(fā)明的實施例提供一種編譯任務(wù)管理方法及編譯任務(wù)管理裝置,涉及軟件開發(fā)技術(shù)領(lǐng)域,能夠提高編譯效率,減少編譯過程所占用的硬件資源。具體方案為:獲取源代碼,所述源代碼包括N個源程序的代碼;其中N≥2;預(yù)編譯所述源代碼,并將經(jīng)過預(yù)編譯的所述源代碼保存在保存路徑下;對所述保存路徑下已保存的所述源代碼進行M次編譯,輸出M個目標(biāo)程序;其中2≤M≤N。本發(fā)明用于軟件開發(fā)。
【專利說明】
一種編譯任務(wù)管理方法及編譯任務(wù)管理裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及軟件開發(fā)技術(shù)領(lǐng)域,尤其涉及一種編譯任務(wù)管理方法及編譯任務(wù)管理
目.0
【背景技術(shù)】
[0002]持續(xù)集成(英文全稱:Continuous integrat1n)系統(tǒng)用于對源代碼進行集成構(gòu)建,具體包括編譯、自動化測試、發(fā)布等。其中編譯是指利用源代碼生成目標(biāo)程序的過程。
[0003]現(xiàn)有的持續(xù)集成系統(tǒng)以一次編譯過程作為一個獨立的編譯任務(wù),為每個編譯任務(wù)分配獨立的保存路徑,用于保存每個編譯任務(wù)各自對應(yīng)的經(jīng)過預(yù)編譯的源代碼,以備將來再次編譯時使用,從而提高編譯速度。
[0004]結(jié)合圖1所示的編譯過程,在執(zhí)行一個編譯任務(wù)時,持續(xù)集成系統(tǒng)首先更新并保存源代碼,然后為本次編譯設(shè)置保存路徑,將經(jīng)過預(yù)編譯的源代碼保存在該路徑下,最后完成編譯,輸出目標(biāo)程序。
[0005]在一些軟件的開發(fā)過程中,待編譯的源代碼可能包括了多個源程序的代碼,多個源程序分別用于生成多個目標(biāo)程序,也就是說編譯器可以對一份源代碼進行多次編譯,生成多個目標(biāo)程序。
[0006]例如,在開發(fā)一款智能電視操作系統(tǒng)的開發(fā)過程中,開發(fā)人員針對不同硬件平臺(例如不同商家的處理器、芯片組等)編寫多個操作系統(tǒng)的源程序,將多個源程序的代碼保存在一個源文件中。這樣,待編譯的源代碼就包括了多個源程序的代碼。在一次編譯過程中,編譯器根據(jù)編譯腳本的控制,僅對其中一個源程序進行編譯,生成對應(yīng)的目標(biāo)程序。經(jīng)過多次編譯后即可得到多個源程序各自對應(yīng)的目標(biāo)程序,不同的目標(biāo)程序用于支持不同的硬件平臺。
[0007]或者,同一款芯片、同一操作系統(tǒng)的不同機型,可能各自支持不同的功能,例如是否支持WIFI,屏幕分辨率是否相同等,由于部分功能不同也需要對一份源文件做多次編譯,以生成不同機型各自對應(yīng)的目標(biāo)程序。
[0008]結(jié)合圖2所示,當(dāng)源代碼包括多個源程序的代碼時,持續(xù)集成系統(tǒng)以一次編譯過程作為一個獨立的編譯任務(wù),每個編譯任務(wù)中,都需要完成下列步驟:
[0009]更新并保存源代碼,為本次編譯設(shè)置保存路徑,在該路徑下保存經(jīng)過預(yù)編譯的源代碼,完成編譯后輸出本次編譯對應(yīng)的目標(biāo)程序。
[0010]因此,在對一份源代碼進行多次編譯生成多個目標(biāo)程序的場景中,需要多次分配保存路徑、保存經(jīng)過預(yù)編譯的源代碼,一方面,多次復(fù)制保存源代碼、分配保存路徑、刷新經(jīng)過預(yù)編譯的源代碼,導(dǎo)致編譯過程冗長,因而編譯效率低,另一方面,多次復(fù)制保存源代碼、刷新經(jīng)過預(yù)編譯的源代碼需要占用大量存儲空間,因而編譯過程的硬件資源開銷大。
【發(fā)明內(nèi)容】
[0011]本申請?zhí)峁┮环N編譯任務(wù)管理方法及編譯任務(wù)管理裝置,能夠提高編譯效率,減少編譯過程所占用的硬件資源。
[0012]為達到上述目的,本申請采用如下技術(shù)方案:
[0013]一方面,提供一種編譯任務(wù)管理方法,包括:
[0014]獲取源代碼,所述源代碼包括N個源程序的代碼;其中N>2;
[0015]預(yù)編譯所述源代碼,并將經(jīng)過預(yù)編譯的所述源代碼保存在保存路徑下;
[0016]對所述保存路徑下已保存的所述源代碼進行M次編譯,輸出M個目標(biāo)程序;其中MSN0
[0017]另一方面,提供一種編譯任務(wù)管理裝置,用于執(zhí)行第一方面所提供的編譯任務(wù)管理方法。
[0018]本發(fā)明的實施例所提供的編譯任務(wù)管理方法以及編譯任務(wù)管理裝置,在獲取源代碼后,將經(jīng)過預(yù)編譯的源代碼保存在保存路徑下,然后對經(jīng)過預(yù)編譯的源代碼進行多次編譯。保存路徑不再與單次編譯一一對應(yīng),而是與源代碼一一對應(yīng),當(dāng)對一份源代碼進行多次編譯時,多次編譯共享同一保存路徑下所保存的經(jīng)過預(yù)編譯的源代碼。相比現(xiàn)有技術(shù)中需要進行多次保存的方案,本申請的方案中只進行一次保存,簡化了編譯過程,提高了編譯效率,同時減少了為保存數(shù)據(jù)所占用的存儲空間。
【附圖說明】
[0019]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0020]圖1為編譯過程的說明示意圖;
[0021 ]圖2為編譯過程的另一說明示意圖;
[0022]圖3為本發(fā)明的實施例所提供的一種編譯任務(wù)管理方法流程圖;
[0023]圖4為本發(fā)明的實施例所提供的一種編譯任務(wù)管理裝置結(jié)構(gòu)圖。
【具體實施方式】
[0024]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0025]本發(fā)明的實施例提供一種編譯任務(wù)管理方法及編譯任務(wù)管理裝置,應(yīng)用于源代碼包括多個源程序的代碼的場景中。
[0026]現(xiàn)有技術(shù)的一種方案中,為每一次編譯分配獨立的工作目錄,在各自的工作目錄下設(shè)置保存路徑,在保存路徑下保存經(jīng)過預(yù)編譯的源代碼,以備將來再次編譯時使用。也就是說,一次編譯對應(yīng)一個工作目錄,在每個工作目錄下各自保存經(jīng)過預(yù)編譯的源代碼。
[0027]本申請?zhí)峁┑募夹g(shù)方案,以向一個工作目錄提交源代碼,到完成對該源代碼的多次編譯,輸出多個目標(biāo)程序的過程作為一次編譯任務(wù)。在一次編譯任務(wù)中,為一份源代碼(源文件)分配一個工作目錄,并設(shè)置一個保存路徑。特別指出一點,本申請的實施例中所稱的保存路徑,是指用于保存經(jīng)過預(yù)編譯的源代碼的目錄。一份源代碼對應(yīng)一個保存路徑,保存路徑可以為工作目錄下的一個子目錄,也可以是一個獨立的目錄。
[0028]另外,工作目錄下可以有一個子目錄用于保存預(yù)編譯之前的源代碼,在將經(jīng)過預(yù)編譯的源代碼保存在保存目錄下之后,所保存的預(yù)編譯之前的源代碼可以刪除,也可以保由ο
[0029]將經(jīng)過預(yù)編譯的源代碼保存在保存目錄下之后,可以對經(jīng)過預(yù)編譯的源代碼進行多次編譯,輸出多個目標(biāo)程序,完成該次編譯任務(wù)。多次編譯無需各自設(shè)置保存路徑或者各自保存經(jīng)過預(yù)編譯的源代碼,而是共享保存路徑下已經(jīng)保存的經(jīng)過預(yù)編譯的源代碼。
[0030]簡而言之,本申請的方案中,一份源代碼對應(yīng)一個保存路徑,一次編譯任務(wù)包括多次編譯,多次編譯共享保存路徑下所保存的數(shù)據(jù)。
[0031 ] 實施例
[0032]本發(fā)明的實施例提供一種編譯任務(wù)管理方法,應(yīng)用于編譯任務(wù)管理裝置,參照圖3所示,具體包括以下步驟:
[0033]301、編譯任務(wù)管理裝置獲取源代碼。
[0034]編譯任務(wù)管理裝置可以是一個單獨的編譯器,也可以是持續(xù)集成系統(tǒng)等軟件開發(fā)系統(tǒng)中用于執(zhí)行編譯功能的功能組件。本實施例中以持續(xù)集成系統(tǒng)的應(yīng)用場景為例進行說明。
[0035]軟件開發(fā)過程中,通常需要經(jīng)過多次集成構(gòu)建,具體包括源代碼編譯生成目標(biāo)程序,對目標(biāo)程序進行自動化測試,最后得到軟件的發(fā)布版本。
[0036]本實施例所描述的編譯任務(wù)管理方法,適用于源代碼包括N個源程序的代碼的應(yīng)用場景,其中N多2。通過對源代碼進行多次編譯,可以得到多個目標(biāo)程序??蛇x的,編譯任務(wù)管理裝置獲取源代碼的具體方式可以是編譯任務(wù)管理裝置接收軟件開發(fā)人員通過版本控制(英文全稱:Revis1n control)系統(tǒng)向持續(xù)集成系統(tǒng)所提交的待編譯的源代碼,持續(xù)集成系統(tǒng)在接收到源代碼之后,根據(jù)軟件開發(fā)人員的設(shè)置,將源代碼保存在工作目錄下的一個子目錄下。
[0037]302、編譯任務(wù)管理裝置設(shè)置保存路徑。
[0038]保存路徑為用于保存經(jīng)過預(yù)編譯的源代碼的目錄,保存路徑可以為工作目錄下的一個子目錄,也可以是一個獨立的目錄。
[0039]步驟302為可選步驟。例如,在創(chuàng)建工作目錄之后即執(zhí)行步驟302,或者在第一次向工作目錄提交源代碼時,執(zhí)行步驟302。當(dāng)再次向工作目錄提交源代碼時,可使用已有的保存路徑,因此無需再次執(zhí)行步驟302。
[0040]303、編譯任務(wù)管理裝置刪除保存路徑下已保存的數(shù)據(jù)。
[0041 ] 步驟303為可選步驟。
[0042]軟件開發(fā)人員可以向工作目錄多次提交源代碼,在第i次提交之后,編譯任務(wù)管理裝對第i次提交的源代碼進行預(yù)編譯,并將經(jīng)過預(yù)編譯的源代碼作為目標(biāo)文件保存在保存目錄下,目標(biāo)文件的數(shù)量通常大于I。當(dāng)軟件開發(fā)人員第i+Ι次向工作目錄提交源代碼時,保存路徑下保存有第i次提交時所保存的目標(biāo)文件。
[0043]可選的,每次向工作目錄提交源代碼時,均執(zhí)行步驟303。這種情況下,第i+ Ι次提交時,保存路徑下已保存的數(shù)據(jù)包括第i次提交時在保存路徑下所保存的目標(biāo)文件。
[0044]或者,每隔幾次向工作目錄提交源代碼時,執(zhí)行一次步驟303。例如,若第i次提交時執(zhí)行了步驟303,則第i + Ι次、第i+2次提交時不執(zhí)行步驟303,在第i+3次提交時執(zhí)行步驟303。這種情況下,第i+3次提交時,保存路徑下已保存的數(shù)據(jù)包括第i次、第i + Ι次、第i+2次提交時在保存路徑下所保存的目標(biāo)文件。
[0045]304、編譯任務(wù)管理裝置預(yù)編譯源代碼,并將經(jīng)過預(yù)編譯的源代碼保存在保存路徑下。
[0046]源代碼所在的工作目錄如果已經(jīng)設(shè)置有保存路徑,則步驟301之后就可以直接執(zhí)行步驟304。如果尚未設(shè)置保存路徑,則步驟301之后先執(zhí)行步驟302,再執(zhí)行步驟304。優(yōu)選的,步驟304之前先執(zhí)行步驟303。
[0047]在保存路徑下所保存的源代碼,是指經(jīng)過預(yù)編譯的以目標(biāo)文件形式保存的源代碼。
[0048]305、編譯任務(wù)管理裝置對保存路徑下已保存的源代碼進行M次編譯,輸出M個目標(biāo)程序。
[0049]源代碼包括N個源程序的代碼,對源代碼完成一次編譯輸出一個目標(biāo)程序,編譯任務(wù)管理裝置可以根據(jù)編譯控制腳本的配置,按照一定的順序完成M次編譯,輸出M個目標(biāo)程序,其中2<M<N??蛇x的,編譯任務(wù)管理裝置向版本控制系統(tǒng)輸出目標(biāo)程序,由版本控制系統(tǒng)對目標(biāo)程序進行統(tǒng)一管理。
[0050]完成M次編譯之后,本次提交在保存目錄下所保存的目標(biāo)文件,可以保留在保存目錄下,在后續(xù)向工作目錄提交更新的源代碼并執(zhí)行步驟103時,清除。
[0051]在對一份源代碼進行多次編譯生成多個目標(biāo)程序的場景中,現(xiàn)有技術(shù)的方案需要在每次編譯時分配保存路徑并保存目標(biāo)文件,因編譯過程冗長而導(dǎo)致編譯效率低。本申請的方案中一份源代碼對應(yīng)一個保存路徑,在保存路徑下只需保存一次目標(biāo)文件,后續(xù)的多次編譯共享保存路徑下的目標(biāo)文件,無需針對每一次編譯分別保存,從而提高了編譯效率。
[0052]另一方面,現(xiàn)有技術(shù)中多次刷新目標(biāo)文件需要占用大量存儲空間,因而編譯過程的硬件資源開銷大。本申請的方案中,只需保存一次目標(biāo)文件,從而減少了為保存數(shù)據(jù)所占用的存儲空間。
[0053]更進一步地,對于已保存的數(shù)據(jù),現(xiàn)有技術(shù)中通常是將存入日期靠前或者后期編譯中使用頻率低的數(shù)據(jù)清除,騰出保存空間,然后保存更新的目標(biāo)文件。當(dāng)源代碼有更新時,對更新后的源代碼進行編譯的過程中,使用的多個目標(biāo)文件中可能既包括以前保存的目標(biāo)文件,也包括本次更新的目標(biāo)文件。多次使用以前保存的目標(biāo)文件可能會產(chǎn)生累積錯誤。
[0054]存儲系統(tǒng)(如磁盤、磁盤控制器、內(nèi)存等)或文件系統(tǒng)出現(xiàn)的錯誤也可能導(dǎo)致保存的目標(biāo)文件本身出現(xiàn)錯誤,基于錯誤的目標(biāo)文件進行以后的多次編譯,也可能導(dǎo)致累積錯誤。本發(fā)明的實施例中,編譯任務(wù)管理裝置清除已保存的數(shù)據(jù)后再保存本次提交的源代碼生成的目標(biāo)文件,在本次保存的目標(biāo)文件的基礎(chǔ)上進行編譯,以減少累積錯誤。
[0055]例如,在一種具體的實施方式中,在初次向工作目錄提交源代碼后,通過預(yù)編譯生成源代碼的目標(biāo)文件,在保存目錄下保存目標(biāo)文件并對目標(biāo)文件進行多次編譯以生成多個目標(biāo)程序。當(dāng)向該工作目錄提交新的源代碼時,首先清除保存目錄下已保存的數(shù)據(jù),再保存更新后的源代碼生成的目標(biāo)文件。也就是說,一旦源代碼有更新,保存路徑下所保存的目標(biāo)文件對應(yīng)更新,且編譯過程中僅使用本次保存的目標(biāo)文件,不再使用源代碼更新前所保存的目標(biāo)文件,從而減少累積錯誤。
[0056]本發(fā)明的實施例所提供的編譯任務(wù)管理方法,在獲取源代碼后,將經(jīng)過預(yù)編譯的源代碼保存在保存路徑下,然后對經(jīng)過預(yù)編譯的源代碼進行多次編譯。保存路徑不再與單次編譯一一對應(yīng),而是與源代碼一一對應(yīng),當(dāng)對一份源代碼進行多次編譯時,多次編譯共享同一保存路徑下所保存的經(jīng)過預(yù)編譯的源代碼。相比現(xiàn)有技術(shù)中需要進行多次保存的方案,本申請的方案中只進行一次保存,簡化了編譯過程,提高了編譯效率,同時減少了為保存數(shù)據(jù)所占用的存儲空間。另外,當(dāng)工作目錄下的源代碼有更新時,首先清除已保存的數(shù)據(jù),僅在本次保存的數(shù)據(jù)的基礎(chǔ)上進行編譯,從而降低了累積錯誤發(fā)生的可能。
[0057]基于圖3所對應(yīng)的實施例,本發(fā)明的實施例還提供一種編譯任務(wù)管理裝置,用于執(zhí)行上述實施例中所描述的編譯任務(wù)管理方法。結(jié)合圖4所示,編譯任務(wù)管理裝置40包括處理單元401、存儲單元402、接收單元403、輸出單元404以及總線405。單元401、存儲單元402、接收單元403、輸出單元404通過總線405連接并完成相互間的通信。
[0058]用于執(zhí)行本發(fā)明方案的程序代碼保存在存儲單元402中,并由處理單元401來控制執(zhí)行。
[°°59] 存儲單元402可以包括易失性存儲單元(英文全稱:volatile memory),例如隨機存取存儲單元(英文全稱:random-access memory,英文簡稱:RAM)。存儲單元也可以包括非易失性存儲單元(英文全稱:non-volatile memory),例如只讀存儲單元(英文全稱:read-only memory,英文簡稱:ROM),快閃存儲單元(英文全稱:flash memory),硬盤(英文全稱:hard disk drive,英文簡稱:HDD)或固態(tài)硬盤(英文全稱:solid-state drive,英文簡稱:SSD)。存儲單元402還可以包括上述種類的存儲單元的組合。
[0060]處理單元401可以是中央處理單元(全稱:Central Processing Unit,簡稱:CPU),或者CPU和硬件芯片的組合。上述硬件芯片可以是專用集成電路(英文全稱:applicat1n-specific integrated c ir cu i t,英文簡稱:ASIC),可編程邏輯器件(英文全稱:programmable logic device,英文簡稱:PLD)或其任意組合。
[0061 ] 處理單元401,用于調(diào)用存儲單元402中的程序代碼,在一種可能的實施方式中,當(dāng)上述程序被處理單元401執(zhí)行時,實現(xiàn)如下功能:
[0062]接收單元403,用于獲取源代碼,源代碼包括N個源程序的代碼。其中N>2。
[0063]處理單元401,用于預(yù)編譯源代碼,并將經(jīng)過預(yù)編譯的源代碼按照保存路徑保存在存儲單元402中;
[0064]處理單元401,還用于對保存路徑下已保存已保存的源代碼進行M次編譯,輸出M個目標(biāo)程序。其中2<M<N。
[0065]可選的,處理單元401,還用于設(shè)置保存路徑。
[0066]可選的,處理單元401,還用于刪除存儲單元402中保存路徑下已保存的數(shù)據(jù)。
[0067]本發(fā)明的實施例所提供的編譯任務(wù)管理裝置,在獲取源代碼后,將經(jīng)過預(yù)編譯的源代碼保存在保存路徑下,然后對經(jīng)過預(yù)編譯的源代碼進行多次編譯。保存路徑不再與單次編譯一一對應(yīng),而是與源代碼一一對應(yīng),當(dāng)對一份源代碼進行多次編譯時,多次編譯共享同一保存路徑下所保存的經(jīng)過預(yù)編譯的源代碼。相比現(xiàn)有技術(shù)中需要進行多次保存的方案,本申請的方案中只進行一次保存,簡化了編譯過程,提高了編譯效率,同時減少了為保存數(shù)據(jù)所占用的存儲空間。另外,當(dāng)工作目錄下的源代碼有更新時,首先清除已保存的數(shù)據(jù),僅在本次保存的數(shù)據(jù)的基礎(chǔ)上進行編譯,從而降低了累積錯誤發(fā)生的可能。
[0068]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)所述以權(quán)利要求的保護范圍為準。
【主權(quán)項】
1.一種編譯任務(wù)管理方法,其特征在于,包括: 獲取源代碼,所述源代碼包括N個源程序的代碼;其中2; 預(yù)編譯所述源代碼,并將經(jīng)過預(yù)編譯的所述源代碼保存在保存路徑下; 對所述保存路徑下已保存的所述源代碼進行M次編譯,輸出M個目標(biāo)程序;其中N。2.根據(jù)權(quán)利要求1所述的編譯任務(wù)管理方法,其特征在于,所述將經(jīng)過預(yù)編譯的所述源代碼保存在保存路徑下之前,還包括: 設(shè)置所述保存路徑。3.根據(jù)權(quán)利要求2所述的編譯任務(wù)管理方法,其特征在于,所述設(shè)置所述保存路徑之后,所述將經(jīng)過預(yù)編譯的所述源代碼保存在保存路徑下之前,還包括: 刪除所述保存路徑下已保存的數(shù)據(jù)。4.一種編譯任務(wù)管理裝置,其特征在于,包括:處理單元、存儲單元、接收單元、輸出單元以及總線,所述處理單元、所述存儲單元、所述接收單元以及所述輸出單元通過所述總線連接; 所述接收單元,用于獲取源代碼,所述源代碼包括N個源程序的代碼;其中2; 所述處理單元,用于預(yù)編譯所述源代碼,并將經(jīng)過預(yù)編譯的所述源代碼按照保存路徑保存在所述存儲單元中; 所述處理單元,還用于對所述保存路徑下已保存的所述源代碼進行M次編譯,輸出M個目標(biāo)程序;其中2<M<N。5.根據(jù)權(quán)利要求4所述的編譯任務(wù)管理裝置,其特征在于, 所述處理單元,還用于設(shè)置所述保存路徑。6.根據(jù)權(quán)利要求5所述的編譯任務(wù)管理裝置,其特征在于, 所述處理單元,還用于刪除所述存儲單元中所述保存路徑下已保存的數(shù)據(jù)。
【文檔編號】G06F9/45GK105912379SQ201610202860
【公開日】2016年8月31日
【申請日】2016年4月1日
【發(fā)明人】丁達志, 趙玉霞, 李春華
【申請人】青島海信電器股份有限公司