專利名稱:一種自動(dòng)創(chuàng)建編譯環(huán)境的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種自動(dòng)創(chuàng)建編譯環(huán)境的方法及系統(tǒng)。
技術(shù)背景目前在通信系統(tǒng)的實(shí)際應(yīng)用中,往往會(huì)用到不同CPU類型的單板,比如 PowerPC、 IntelX86、 ARM、 XSCALE、 C51、 IXP2400。在編譯上述單板的代碼時(shí), 通常采用命令行方式。在針對(duì)不同類型的單板及不同型號(hào)的CPU進(jìn)行編譯時(shí), 使用的編譯器可能不同,編譯器安裝在不同的目錄下,并且可能在注冊(cè)表中找 不到相關(guān)的信息。按照傳統(tǒng)的方法,為了能夠同時(shí)編譯多塊單板,往往在一個(gè)批處理文件中 手工設(shè)置針對(duì)不同CPU類型的編譯器的安裝路徑。使用上述方法,在每次將待 編譯代碼移植到其它機(jī)器上的時(shí)候,都需要修改該批處理文件,使之與移植后 機(jī)器的安裝路徑匹配。此外,在每次編譯的時(shí)候,還需要手工啟動(dòng)一個(gè)命令, 將要編譯的整個(gè)版本目錄映射一個(gè)驅(qū)動(dòng)器盤符,再逐次進(jìn)入到該驅(qū)動(dòng)器盤符下 的各單板的目錄下,進(jìn)行編譯器的路徑設(shè)置,然后才能進(jìn)行編譯。當(dāng)版本的編 譯次數(shù)較少,涉及的研發(fā)人員不多時(shí),該方法還可以被接受。但當(dāng)待編譯的單 板版本較多,研發(fā)隊(duì)伍龐大時(shí),使用該方法使工作效率下降。發(fā)明內(nèi)容為解決上述問題,本發(fā)明提供了一種自動(dòng)創(chuàng)建編譯環(huán)境的方法及系統(tǒng),其 目的在于自動(dòng)地建立一個(gè)命令行編譯環(huán)境,節(jié)省勞動(dòng)時(shí)間,提高勞動(dòng)效率,增 強(qiáng)代碼的可移植性。本發(fā)明公開了一種自動(dòng)創(chuàng)建編譯環(huán)境的方法,包括步驟1,根據(jù)待編譯目標(biāo)單板對(duì)應(yīng)的關(guān)鍵文件及所述關(guān)鍵文件對(duì)應(yīng)的屬性 要求,在硬件驅(qū)動(dòng)器中査找所述關(guān)鍵文件;步驟2,將査找到的所述關(guān)鍵文件的存在路徑設(shè)置為編譯器的工作路徑,根據(jù)所述編譯器的工作路徑啟動(dòng)命令行編譯環(huán)境,以編譯所述待編譯目標(biāo)單板 的代碼。所述步驟1進(jìn)一步包括步驟21,根據(jù)操作系統(tǒng)注冊(cè)表信息,解析得到硬盤驅(qū)動(dòng)器列表; 步驟22,根據(jù)所述硬盤驅(qū)動(dòng)器列表,在硬盤驅(qū)動(dòng)器中查找所述關(guān)鍵文件; 步驟23,判斷查找到的關(guān)鍵文件是否滿足所述關(guān)鍵文件對(duì)應(yīng)的屬性要求,如果不滿足,則執(zhí)行步驟22繼續(xù)査找。所述步驟23后還包括,步驟24,將査找到的所述關(guān)鍵文件的存在路徑,保存到搜索結(jié)果文件中所述待編譯目標(biāo)單板對(duì)應(yīng)的單板類型條目中。所述步驟1前還包括,步驟41,在所述搜索結(jié)果文件中査找所述關(guān)鍵文件的存在路徑,如果未査找到,執(zhí)行步驟l,否則,執(zhí)行步驟2。 所述步驟41進(jìn)一步包括步驟51,判斷所述搜索結(jié)果文件是否存在,如果不存在,執(zhí)行步驟l;步驟52,在所述搜索結(jié)果文件中查找所述待編譯目標(biāo)單板對(duì)應(yīng)的單板類 型條目,如果未査找到,執(zhí)行步驟l;步驟53,判斷在所述單板類型條目中的關(guān)鍵文件存在路徑下,是否存在 滿足所述屬性要求的關(guān)鍵文件,如果不存在,執(zhí)行步驟l,否則,執(zhí)行步驟2。所述步驟22還包括,如果未査找到所述關(guān)鍵文件,提供出錯(cuò)信息,所述 方法異常結(jié)束。本發(fā)明還公開了一種自動(dòng)創(chuàng)建編譯環(huán)境的系統(tǒng),包括査找模塊,用于根據(jù)待編譯目標(biāo)單板對(duì)應(yīng)的關(guān)鍵文件及所述關(guān)鍵文件對(duì)應(yīng) 的屬性在驅(qū)動(dòng)器中查找所述關(guān)鍵文件;執(zhí)行模塊,用于將査找到的所述關(guān)鍵文件的存在路徑設(shè)置為編譯器的工作 路徑,根據(jù)所述編譯器的工作路徑啟動(dòng)命令行編譯環(huán)境,以編譯所述待編譯目 標(biāo)單板的代碼。所述査找模塊進(jìn)一步用于,根據(jù)操作系統(tǒng)注冊(cè)表信息,解析得到硬盤驅(qū)動(dòng) 器列表,根據(jù)所述硬盤驅(qū)動(dòng)器列表,在硬盤驅(qū)動(dòng)器中査找所述關(guān)鍵文件,判斷 査找到的關(guān)鍵文件是否滿足所述關(guān)鍵文件對(duì)應(yīng)的屬性要求,如果不滿足則繼續(xù) 査找。所述査找模塊還用于,將查找到的所述關(guān)鍵文件的存在路徑,保存到搜索結(jié)果文件中所述待編譯目標(biāo)單板對(duì)應(yīng)的單板類型條目中。所述執(zhí)行模塊還用于在所述搜索結(jié)果文件中查找所述關(guān)鍵文件的存在路 徑,如果未查找到,則通過所述査找模塊查找到所述關(guān)鍵文件的存在路徑,如 果査找到,則設(shè)置編譯器的工作路徑為査找到的關(guān)鍵文件存在路徑。本發(fā)明的有益效果在于,采用本發(fā)明所述方法及系統(tǒng),能夠自動(dòng)創(chuàng)建一個(gè) 命令行編譯環(huán)境,減少代碼移植的困難,提高工作效率,并且還可以有效預(yù)防 因?yàn)榇a版本與編譯環(huán)境不匹配所產(chǎn)生的問題。
圖l是本發(fā)明系統(tǒng)結(jié)構(gòu)圖;圖2是實(shí)現(xiàn)本發(fā)明方法的流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí) 施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅 僅用以解釋本發(fā)明,并不用于限定本發(fā)明。如圖1所示,自動(dòng)創(chuàng)建編譯環(huán)境的系統(tǒng),包括查找模塊101,用于根據(jù)操作系統(tǒng)注冊(cè)表信息,解析得到硬盤驅(qū)動(dòng)器列表, 根據(jù)所述硬盤驅(qū)動(dòng)器列表,在各個(gè)硬盤驅(qū)動(dòng)器中查找所述關(guān)鍵文件,判斷查找 到的關(guān)鍵文件是否滿足所述關(guān)鍵文件對(duì)應(yīng)的屬性要求,如果不滿足則繼續(xù)査 找,如果滿足,則將查找到的所述關(guān)鍵文件的存在路徑,保存到搜索結(jié)果文件 中的待編譯目標(biāo)單板對(duì)應(yīng)的單板類型條目中,如果最終未查找到滿足屬性要求 的關(guān)鍵文件,則提供出錯(cuò)信息,并異常結(jié)束流程。執(zhí)行模塊102,用于判斷所述搜索結(jié)果文件是否存在,如果不存在,則通 過查找模塊101進(jìn)行查找,否則,判斷所述搜索結(jié)果文件中是否存在所述待編 譯目標(biāo)單板對(duì)應(yīng)的單板類型條目,如果不存在,則通過查找模塊101進(jìn)行查找, 否則,判斷在所述單板類型條目中的關(guān)鍵文件存在路徑下,是否存在滿足所述 屬性要求的關(guān)鍵文件,如果不存在,通過查找模塊101進(jìn)行査找,如果存在, 將查找到的所述關(guān)鍵文件的存在路徑設(shè)置為編譯器的工作路徑,根據(jù)所述編譯 器的工作路徑啟動(dòng)命令行編譯環(huán)境,以編譯所述待編譯目標(biāo)單板的代碼。本發(fā)明的方法為通過解析操作系統(tǒng)的注冊(cè)表中的數(shù)據(jù),得到硬盤驅(qū)動(dòng)器列 表,通過在各個(gè)硬盤驅(qū)動(dòng)器中査找關(guān)鍵文件,判斷査找到的關(guān)鍵文件是否滿足 屬性要求,以獲得編譯器的工作路徑,從而建立對(duì)應(yīng)于待編譯目標(biāo)單板的命令 行編譯環(huán)境。判斷硬盤驅(qū)動(dòng)器是否存在,判斷的方法為判斷硬盤驅(qū)動(dòng)器下面的 根文件是否存在,例如要判斷C盤是否存在,只要判斷根文件。\是否存。具體解析方法是在注冊(cè)表項(xiàng)目HKEY—LOCAL_MACHINE\SYSTEM\MountedDevices中 査找具有特征字符串M)osDeviceA的字符串,提取特征字符串所在一行的字符 串,并提取緊接特征字符串后的一個(gè)字母,該字母為存在的驅(qū)動(dòng)器盤符字母。 使用注冊(cè)表項(xiàng)目而不采用羅列26個(gè)字母是因?yàn)轫?xiàng)目中通常不含映射的驅(qū)動(dòng)器 盤符,只要提取有效的盤符字母即可,而采用羅列26個(gè)字母的方法,則需要 排除虛擬映射的盤符,造成過程復(fù)雜化。當(dāng)硬盤空間過大時(shí),關(guān)鍵文件搜索時(shí)間可能會(huì)過長。為了縮短編譯環(huán)境的 創(chuàng)建時(shí)間,減少査找過程,本發(fā)明將查找到的對(duì)應(yīng)于待編譯目標(biāo)單板的關(guān)鍵文 件存在路徑,保存到搜索結(jié)果文件中待編譯目標(biāo)單板對(duì)應(yīng)的單板類型條目中, 搜素結(jié)果文件位于特定目錄下。首先通過搜索結(jié)果文件查找確定路徑,如果通 過搜索結(jié)果文件不能確定,再執(zhí)行査找過程。本發(fā)明的方法實(shí)現(xiàn)流程如圖2所示步驟S201,判斷搜索結(jié)果文件是否已經(jīng)存在,如果不存在,則執(zhí)行步驟 S206,否則,執(zhí)行步驟S202;步驟S202,在搜索結(jié)果文件中,查找待編譯目標(biāo)單板對(duì)應(yīng)的單板類型條 目,如果未査找到,則執(zhí)行步驟S206,否則,執(zhí)行步驟S203;步驟S203,判斷在査找到的單板類型條目提供的路徑下,是否存在滿足 關(guān)鍵文件屬性要求的關(guān)鍵文件,如果不存在,執(zhí)行步驟S206,否則,執(zhí)行步 驟S204;步驟S204,設(shè)置編譯器工作路徑為在搜索結(jié)果文件中待編譯目標(biāo)單板對(duì)應(yīng)的單板類型條目提供的路徑;步驟S205,根據(jù)設(shè)置的編譯器工作路徑,啟動(dòng)一個(gè)命令行編譯環(huán)境; 步驟S206,根據(jù)注冊(cè)表中存儲(chǔ)的設(shè)備信息,解析得到設(shè)備所有硬盤驅(qū)動(dòng)器列表;步驟S207,根據(jù)硬盤驅(qū)動(dòng)器列表,依次在各個(gè)硬盤驅(qū)動(dòng)器中查找關(guān)鍵文件,如果查找到,則執(zhí)行步驟S208,否則,執(zhí)行步驟S210;步驟S208,判斷查找到的關(guān)鍵文件的屬性是否滿足屬性要求,如果滿足, 則執(zhí)行步驟S209,否則執(zhí)行步驟S207;步驟S209,將査找到的關(guān)鍵文件的存在路徑保存到搜索結(jié)果文件中待編 譯目標(biāo)單板對(duì)應(yīng)的單板類型條目中。步驟S210,提供出錯(cuò)信息,方法異常結(jié)束。具體實(shí)施例描述如下。采用一個(gè)CPU類型是XSCALE的單板BOARD—A,其編譯器安裝路徑為DIR—A, 輔助工具安裝路徑為DIR—A—AUX, 一個(gè)CPU類型是PowerPC的單板BOARD_B, 其編譯器安裝路徑為DIR_B, 一個(gè)CPU類型是C51的單板BOARD—C,其編譯器 安裝路徑為DIR_C。BOARD—A對(duì)應(yīng)兩個(gè)關(guān)鍵文件ccarra. exe禾口 uca. exe,其中ccarm. exe是C 語言編譯程序,uca. exe是微碼工具,屬性要求為ccarm. exe的有效時(shí)間(上 次修改時(shí)間)是1999-04-23 00:00~1999-04-23 23:59, uca. exe的有效時(shí)間 是2005-08-21 00:00 9999-12-31 23:59。B0ARD—B對(duì)應(yīng)關(guān)鍵文件為ccppc. exe, 屬性要求為有效大小是133174字節(jié)。BOARD—C對(duì)應(yīng)關(guān)鍵文件c51. exe。應(yīng)用本發(fā)明方法處理并編譯BOARD—A的代碼,操作如下判斷搜索結(jié)果文件是否已經(jīng)存在,如果不存在,則進(jìn)行査找過程,否則,, 在搜索結(jié)果文件中,査找BRA0AD—A對(duì)應(yīng)的單板類型條目,如果未査找到,則 執(zhí)行查找過程,否則,判斷在查找到的單板類型條目提供的路徑下,是否分別 存在滿足有效時(shí)間在1999-04-23 00:00 1999-04-23 23:59的文件ccarm. exe, 有效時(shí)間在2005-08-21 00:00 9999-12-31 23:59的文件uca. exe,如果不存 在,執(zhí)行査找過程,否則,設(shè)置編譯器工作路徑為在搜索結(jié)果文件中待編譯目 標(biāo)單板對(duì)應(yīng)的單板類型條目提供的路徑,進(jìn)入BOARD—A所在的編譯目錄,加上 相關(guān)的編譯命令make B0ARD_A,然后運(yùn)行批處理,開始進(jìn)行編譯。如果編譯 工具與待編譯代碼的要求不匹配,則會(huì)報(bào)錯(cuò),并提示描述代碼版本所需要的文 件。查找過程為,根據(jù)注冊(cè)表中存儲(chǔ)的設(shè)備信息,解析得到設(shè)備的硬盤驅(qū)動(dòng)器 列表,根據(jù)硬盤驅(qū)動(dòng)器列表,依次在各個(gè)硬盤驅(qū)動(dòng)器中查找關(guān)鍵文件,如果査 找到,則判斷査找到的ccarm. exe文件有效時(shí)間是否在1999-04-2300:00 1999-04-23 23:59范圍內(nèi),uca. exe的有效時(shí)間是否在2005-08-21 00:00 9999-12-31 23:59范圍內(nèi),如果在所述范圍內(nèi),將查找到的ccarm. exe 存在路徑DIR_A和uca. exe存在DIR一A—AUX保存到搜索結(jié)果文件中待編譯目標(biāo) 單板對(duì)應(yīng)的單板類型條目中,如果不滿足要求,則繼續(xù)查找。如果最終沒有査 找到,則提供出錯(cuò)信息,方法異常結(jié)束。如果要編譯三塊單板的代碼,則確定了三個(gè)單板的關(guān)鍵文件存在路徑后, 分別將三個(gè)單板的編譯器工作路徑設(shè)置為關(guān)鍵文件存在路徑,添加相關(guān)編譯命 令,運(yùn)行批處理,則三個(gè)單板的代碼被一次編譯完成。如果需要?jiǎng)討B(tài)地手工逐次編譯單板代碼,則可以將編譯器路徑設(shè)置及編譯 命令合成一個(gè)命令doskey,存儲(chǔ)于該批處理文件中,運(yùn)行批處理后,調(diào)用命 令doskey,以完成動(dòng)態(tài)地手工編譯。
權(quán)利要求
1.一種自動(dòng)創(chuàng)建編譯環(huán)境的方法,其特征在于,包括步驟1,根據(jù)待編譯目標(biāo)單板對(duì)應(yīng)的關(guān)鍵文件及所述關(guān)鍵文件對(duì)應(yīng)的屬性要求,在硬件驅(qū)動(dòng)器中查找所述關(guān)鍵文件;步驟2,將查找到的所述關(guān)鍵文件的存在路徑設(shè)置為編譯器的工作路徑,根據(jù)所述編譯器的工作路徑啟動(dòng)命令行編譯環(huán)境,以編譯所述待編譯目標(biāo)單板的代碼。
2. 如權(quán)利要求1所述自動(dòng)創(chuàng)建編譯環(huán)境的方法,其特征在于,所述步驟l 進(jìn)一步包括步驟21,根據(jù)操作系統(tǒng)注冊(cè)表信息,解析得到硬盤驅(qū)動(dòng)器列表; 步驟22,根據(jù)所述硬盤驅(qū)動(dòng)器列表,在硬盤驅(qū)動(dòng)器中查找所述關(guān)鍵文件; 步驟23,判斷查找到的關(guān)鍵文件是否滿足所述關(guān)鍵文件對(duì)應(yīng)的屬性要求, 如果不滿足,則執(zhí)行步驟22繼續(xù)查找。
3. 如權(quán)利要求2所述自動(dòng)創(chuàng)建編譯環(huán)境的方法,其特征在于,所述步驟 23后還包括,步驟24,將査找到的所述關(guān)鍵文件的存在路徑,保存到搜索結(jié) 果文件中所述待編譯目標(biāo)單板對(duì)應(yīng)的單板類型條目中。
4. 如權(quán)利要求3所述自動(dòng)創(chuàng)建編譯環(huán)境的方法,其特征在于,所述步驟 l前還包括,步驟41,在所述搜索結(jié)果文件中查找所述關(guān)鍵文件的存在路徑, 如果未查找到,執(zhí)行步驟l,否則,執(zhí)行步驟2。
5. 如權(quán)利要求4所述自動(dòng)創(chuàng)建編譯環(huán)境的方法,其特征在于,所述步驟 41進(jìn)一步包括步驟51,判斷所述搜索結(jié)果文件是否存在,如果不存在,執(zhí)行步驟l;步驟52,在所述搜索結(jié)果文件中查找所述待編譯目標(biāo)單板對(duì)應(yīng)的單板類 型條目,如果未査找到,執(zhí)行步驟l;步驟53,判斷在所述單板類型條目中的關(guān)鍵文件存在路徑下,是否存在 滿足所述屬性要求的關(guān)鍵文件,如果不存在,執(zhí)行步驟l,否則,執(zhí)行步驟2。
6. 如權(quán)利要求2、 3、 4或5所述自動(dòng)創(chuàng)建編譯環(huán)境的方法,其特征在于, 所述步驟22還包括,如果未查找到所述關(guān)鍵文件,提供出錯(cuò)信息,所述方法 異常結(jié)束。
7. —種自動(dòng)創(chuàng)建編譯環(huán)境的系統(tǒng),其特征在于,包括査找模塊,用于根據(jù)待編譯目標(biāo)單板對(duì)應(yīng)的關(guān)鍵文件及所述關(guān)鍵文件對(duì)應(yīng) 的屬性在驅(qū)動(dòng)器中查找所述關(guān)鍵文件;執(zhí)行模塊,用于將查找到的所述關(guān)鍵文件的存在路徑設(shè)置為編譯器的工作 路徑,根據(jù)所述編譯器的工作路徑啟動(dòng)命令行編譯環(huán)境,以編譯所述待編譯目 標(biāo)單板的代碼。
8. 如權(quán)利要求7所述自動(dòng)創(chuàng)建編譯環(huán)境的系統(tǒng),其特征在于,所述查找模塊進(jìn)一步用于,根據(jù)操作系統(tǒng)注冊(cè)表信息,解析得到硬盤驅(qū)動(dòng)器列表,根據(jù) 所述硬盤驅(qū)動(dòng)器列表,在硬盤驅(qū)動(dòng)器中查找所述關(guān)鍵文件,判斷查找到的關(guān)鍵 文件是否滿足所述關(guān)鍵文件對(duì)應(yīng)的屬性要求,如果不滿足則繼續(xù)查找。
9. 如權(quán)利要求8所述自動(dòng)創(chuàng)建編譯環(huán)境的系統(tǒng),其特征在于,所述査找模塊還用于,將査找到的所述關(guān)鍵文件的存在路徑,保存到搜索結(jié)果文件中所 述待編譯目標(biāo)單板對(duì)應(yīng)的單板類型條目中。
10. 如權(quán)利要求9所述自動(dòng)創(chuàng)建編譯環(huán)境的系統(tǒng),其特征在于,所述執(zhí)行 模塊還用于在所述搜索結(jié)果文件中査找所述關(guān)鍵文件的存在路徑,如果未查找 到,則通過所述查找模塊査找到所述關(guān)鍵文件的存在路徑,如果查找到,則設(shè) 置編譯器的工作路徑為査找到的關(guān)鍵文件存在路徑。
全文摘要
本發(fā)明公開了一種自動(dòng)創(chuàng)建編譯環(huán)境的方法,包括步驟1,根據(jù)待編譯目標(biāo)單板對(duì)應(yīng)的關(guān)鍵文件及所述關(guān)鍵文件對(duì)應(yīng)的屬性要求,在硬件驅(qū)動(dòng)器中查找所述關(guān)鍵文件;步驟2,將查找到的所述關(guān)鍵文件的存在路徑設(shè)置為編譯器的工作路徑,根據(jù)所述編譯器的工作路徑啟動(dòng)命令行編譯環(huán)境,以編譯所述待編譯目標(biāo)單板的代碼。從而能夠自動(dòng)創(chuàng)建一個(gè)命令行編譯環(huán)境,節(jié)省勞動(dòng)時(shí)間,提高勞動(dòng)效率,增強(qiáng)代碼的可移植性。
文檔編號(hào)G06F9/45GK101216776SQ200810056229
公開日2008年7月9日 申請(qǐng)日期2008年1月15日 優(yōu)先權(quán)日2008年1月15日
發(fā)明者吳永航, 汪康洪, 王玉琴, 田瑞忠 申請(qǐng)人:中興通訊股份有限公司