OpenHarmony編譯構(gòu)建系統(tǒng)—介紹新增組件以及組件模塊開發(fā)
前言
本文介紹了編譯構(gòu)建系統(tǒng)的使用,新增組件的步驟,組件模塊開發(fā)的方法。
新增組件
準(zhǔn)備好開發(fā)套件。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
一、編寫組件源碼
在applications\sample目錄下新建component_demo目錄。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
之后在component_demo目錄下新建demo.c文件。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
開始編寫… 保存文件。
ps: 源碼各部分組成簡介可以看我的另一篇文章 https://ost.51cto.com/posts/25049。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
二、編寫編譯腳本
在component_demo目錄下新建BUILD.gn文件。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
開始編寫編譯腳本… 保存文件。
- ps1: static_library是靜態(tài)庫 testdemo是庫名稱,最終會被編譯成libtestdemo.a。
- ps2: sources 指定要編譯的demo.c源文件。
- ps3: include_dirs是指定的include目錄 "http://"表示源碼根目錄,后面是目錄名稱。
- ps4: 注意逗號。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
三、單獨編譯目標(biāo)
打開虛擬機,找到1.1.3源碼根目錄,選擇在終端打開。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
查看具體用法。
hb build -h
ps:語法是 hb build -T 路徑 : 目標(biāo)。
hb build -f -T //applications/sample/component_demo:testdemo
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
四、添加組件定義
回到VSCode 根據(jù)路徑 build\lite\components\applications.json 打開applications.json。
定義組件,保存文件。
ps1: targets是編譯入口 是源碼根目錄下的applications/sample/component_demo:testdemo。
ps2: adapted_kernel是適配內(nèi)核。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
五、將組件配置到產(chǎn)品
根據(jù)路徑 vendor\hisilicon\hispark_pegasus\config.json 打開config.json 找到 “subsystem”: “applications” 進(jìn)行配置,保存文件。
- ps: 注意逗號。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
單獨編譯組件。
hb build -f testdemo
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
- ps:在輕量系統(tǒng)中,單獨編譯的目標(biāo)或組件,不能獨立運行,適合發(fā)現(xiàn)編譯錯誤。
燒錄運行的話,需要進(jìn)行固件的全量編譯。
hb build -f
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
六、燒錄固件
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
七、運行
燒錄完成之后,打開MobaXterm,連接串口,重啟開發(fā)板。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
組件模塊開發(fā)
一、建立根目錄
根據(jù)路徑 applications\sample\wifi-iot\app 找到app目錄 新建gn_practice目錄。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
二、建立目錄樹
- 應(yīng)用程序模塊: application
- 驅(qū)動模塊: driver
- 庫模塊: library
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
三、編寫各模塊源碼
- ps:每寫完一個文件記得保存。
先是application模塊,建立一個子模塊的c文件和頭文件。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
子模塊的c文件include對應(yīng)的頭文件。
- ps: 爆紅只需要點擊黃色小燈泡,添加到includePath即可 不會添加的可以看我的上一篇文章。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
新建一個主程序文件。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
編寫主程序文件。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
接下來是driver模塊和library模塊。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
在主程序文件include兩個模塊的頭文件。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
四、編寫各模塊腳本
先編寫application模塊腳本。
- ps: cflags是編譯參數(shù) 這三種情況在默認(rèn)編譯方式下是不允許的,會引發(fā)編譯錯誤,設(shè)置這三個參數(shù)后,編譯系統(tǒng)會把它們不當(dāng)作錯誤來處理。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
接下來編寫driver和library模塊。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
五、定位組件編譯入口
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
applications\sample\wifi-iot\app\BUILD.gn。
修改三個模塊的編譯。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
六、編譯燒錄運行
設(shè)置:
hb set
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
編譯:
hb build -f
編譯成功。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
燒錄成功。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
運行成功。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)