![《鴻蒙智能互聯(lián)設備開發(fā)(微課版)》 課件 2.2 鴻蒙系統(tǒng)構建工具鏈_第1頁](http://file4.renrendoc.com/view14/M00/00/11/wKhkGWdACLGABAazAAMTWNu-vig483.jpg)
![《鴻蒙智能互聯(lián)設備開發(fā)(微課版)》 課件 2.2 鴻蒙系統(tǒng)構建工具鏈_第2頁](http://file4.renrendoc.com/view14/M00/00/11/wKhkGWdACLGABAazAAMTWNu-vig4832.jpg)
![《鴻蒙智能互聯(lián)設備開發(fā)(微課版)》 課件 2.2 鴻蒙系統(tǒng)構建工具鏈_第3頁](http://file4.renrendoc.com/view14/M00/00/11/wKhkGWdACLGABAazAAMTWNu-vig4833.jpg)
![《鴻蒙智能互聯(lián)設備開發(fā)(微課版)》 課件 2.2 鴻蒙系統(tǒng)構建工具鏈_第4頁](http://file4.renrendoc.com/view14/M00/00/11/wKhkGWdACLGABAazAAMTWNu-vig4834.jpg)
![《鴻蒙智能互聯(lián)設備開發(fā)(微課版)》 課件 2.2 鴻蒙系統(tǒng)構建工具鏈_第5頁](http://file4.renrendoc.com/view14/M00/00/11/wKhkGWdACLGABAazAAMTWNu-vig4835.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2.2鴻蒙系統(tǒng)構建工具鏈通過本節(jié)學習,您可以:了解鴻蒙系統(tǒng)構建工具鏈了解Ninja構建工具了解Ninja常用語法了解GN常用語法鴻蒙系統(tǒng)構建工具鏈1.什么是工具鏈?工具鏈本質上是工具和鏈。工具的目標是生成可以運行的程序或庫文件。為了達到該目標,內部需要經歷編譯過程和鏈接過程。編譯過程:編譯的輸入:程序代碼;編譯的輸出:目標文件;編譯需要的工具:編譯器GCC。鏈接過程:鏈接的輸入:程序運行所依賴的庫文件或某個庫所依賴的另一個庫文件;鏈接的輸出:程序的可執(zhí)行文件,或者可被調用的完整的庫文件;鏈接需要的工具:鏈接器,即LD。鴻蒙系統(tǒng)構建工具鏈2.什么是構建工具?構建工具是一個可編程的工具,它描述內容包括:整個工程如何編譯、連接、打包等規(guī)則,工程中的哪些源文件需要編譯以及如何編譯,需要創(chuàng)建哪些庫文件以及如何創(chuàng)建庫文件。構建一個項目通常包含了依賴管理、測試、編譯、打包、發(fā)布等流程,構建工具可以自動化進行這些操作,從而為我們減少這些繁瑣的工作。其中構建工具提供的依賴管理能夠可以自動處理依賴關系。例如一個項目需要用到依賴A,A又依賴于B,那么構建工具就能幫我們導入B,而不需要我們手動去尋找并導入。鴻蒙系統(tǒng)構建工具鏈3.鴻蒙構建工具鏈鴻蒙內核LliteOS的編譯構建工具是hb,hb是ohos-build的簡稱,ohos是openharmonyOS的簡稱。鴻蒙構建系統(tǒng)是由Python、GN、Ninja、makefile等幾個部分組成:Python:對參數(shù)、環(huán)境變量、文件進行操作,負責編譯前的準備工作和為GN收集命令參數(shù)。GN:GN即GenerateNinja,用于生成Ninja文件。Ninja:Ninja是一個致力于速度的小型編譯系統(tǒng)。Makefile:Makefile文件中包括了編譯和處理規(guī)則,通過Makefile工具解析Makefile文件中的命令來指導整個工程的編譯過程。Ninja構建工具1.Ninja簡介Ninja是Google的一名程序員推出的注重速度的構建工具,是一個專注于速度的小型構件系統(tǒng),只需拷貝一個可執(zhí)行程序ninja就可以執(zhí)行,不需要依賴任何庫。Ninja的設計目的:是為了使編譯過程更快,Ninja類似構建工具make,make即GNUMake,一個用于決定如何使用命令完成最終目標構建的程序。Make本身不知道如何具體的完成目標的構建工作,它需要通過makefile中的描述來決定目標構建的具體方案,根據(jù)makefile中的規(guī)則執(zhí)行命令,最后完成編譯輸出。Ninja構建工具2.Ubuntu環(huán)境安裝NinjaNinja編譯需要依賴re2c,re2c是一款語法分析器。在Linux系統(tǒng)中右鍵打開終端,終端中輸入命令安裝re2c。
命令:sudoapt-getinstallre2c檢測re2c版本。
命令:re2c--versionNinja構建工具3.Ubuntu環(huán)境安裝Ninja安裝Ninja,在終端中輸入下載命令。
命令:gitclone/ninja-build/ninja.git對Ninja進行安裝和編譯。在終端中輸入命令:
命令:cdninja
命令:./configure.py--bootstrap檢測Ninja安裝情況。
命令:sudocp./ninja/usr/bin
命令:ninja--version
Ninja常用語法1.基本概念edge(邊):build語句,可以指定目標(target)輸出(output)、規(guī)則(rule)與輸入(input),是編譯過程拓撲圖中的一條邊(edge)。target(目標):編譯過程需要差生的目標,由build語句指定。output(輸出):build語句的前半段,是target的另一種稱呼。input(輸入):build語句的后半段,用于產生output的文件或目標,另一種稱呼是依賴。rule(規(guī)則):通過指定command與一些內置變量,決定如何從輸入產生輸出。Pool:一組rule或edge,通過指定其depth,可以控制并行上限。scope(作用域):變量的作用范圍,有rule與build語句的塊級,也有文件級別。
Ninja常用語法2.關鍵字build:定義一個edge。rule:定義一個rule。pool:定義一個pool。default:指定默認的一個或多個target。include:添加一個ninja文件到當前scope。subninja:添加一個ninja文件,其scope與當前文件不同。phony:一個內置的特殊規(guī)則,指定非文件的target。
Ninja常用語法3.rule、build及poolrule:一個rule就是通過${in}輸入的目標列表,生成${out}的輸出目標列表,目標一般是文件。rulenamecommand=echo${in}>${out}var=strbuild:build代碼塊,是編譯過程中的一個edge。其中,foo是output,bar是input,“:”后面第一個位置的phony是rule,var是自定義變量。buildfoo:phonybarvar=str
Ninja常用語法pool:限制一些非常消耗硬件資源的edge同時執(zhí)行。通過pool=example,在rule或build代碼塊中指定對應的edge所屬的pool為example。由于example的depth=2,所以a、b、c三個target最多只有2個可以同時生成。poolexampledepth=2ruleecho_varcommand=echo${var}>>${out}pool=examplebuilda:echo_varvar=abuildb:echo_varvar=bbuildc:echo_varvar=cGN常用語法GN是Ninja構建文件的元構建工具,能夠構建出Ninja的.ninja文件,比起Ninja原本的構建命令,GN能夠比較好地進行依賴管理,并且能夠很方便的輸出構建圖譜。GN使用非常簡單的動態(tài)類型語言。語言的類型包括:布爾(true,false),64位有符號整數(shù),字符串,列表(任何其他類型),范圍(Scopes),條件語句,循環(huán),函數(shù)調用。GN常用語法字符串:列表:a="mypath"b="$a/foo.cc"http://b->"mypath/foo.cc"c="foo${a}bar.cc"http://c->"foomypathbar.cc"a=["first"]a+=["second"]//["first","second"]a+=["third","fourth"]//["first","second","third","fourth"]b=a+["fifth"]//["first","second","third","fourth","fifth"]GN常用語法條件語句:if(is_linux||(is_win&&target_cpu=="x86")){source-=["something.cc"]}else{...}GN常用語法循環(huán):函數(shù)調用:Foreach(i,mylist){print(i)//Note:iisacopyofe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技驅動的金融產品創(chuàng)新模式研究
- 二零二五年度電影電視劇演員合同簽訂與執(zhí)行協(xié)議
- 小學勞動教育與節(jié)日文化的融合實踐
- 小學科學課程的創(chuàng)新設計與實施策略
- 二零二五年度美容院美容師健康管理與保險勞務合同范本
- 二零二五年度消防器材研發(fā)與技術創(chuàng)新基金投資合同
- 2025年度二零二五年度道路工程竣工驗收合同簡版
- 綠色校園規(guī)劃生態(tài)友好型校園建設策略與實踐
- 家庭生活與小學生學習習慣的養(yǎng)成
- 疫情后的市場新常態(tài)與小微企業(yè)應對策略
- 2025年中國南方航空股份有限公司招聘筆試參考題庫含答案解析
- 商務部發(fā)布《中國再生資源回收行業(yè)發(fā)展報告(2024)》
- 山東省濟南市2024-2024學年高三上學期1月期末考試 地理 含答案
- 2025年福建新華發(fā)行(集團)限責任公司校園招聘高頻重點提升(共500題)附帶答案詳解
- 江蘇省駕??荚嚳颇恳豢荚囶}庫
- 四川省成都市青羊區(qū)成都市石室聯(lián)合中學2023-2024學年七上期末數(shù)學試題(解析版)
- 咨詢公司績效工資分配實施方案
- 2025新人教版英語七年級下單詞表
- 中華護理學會團體標準-氣管切開非機械通氣患者氣道護理
- 未成年入職免責協(xié)議書
- 光伏電站巡檢專項方案
評論
0/150
提交評論