OpenHarmony編譯構(gòu)建系統(tǒng)—介紹新增組件以及組件模塊開發(fā)

想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:
前言
本文介紹了編譯構(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: 源碼各部分組成簡(jiǎn)介可以看我的另一篇文章 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是庫名稱,最終會(huì)被編譯成libtestdemo.a。
- ps2: sources 指定要編譯的demo.c源文件。
- ps3: include_dirs是指定的include目錄 "http://"表示源碼根目錄,后面是目錄名稱。
- ps4: 注意逗號(hào)。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
三、單獨(dú)編譯目標(biāo)
打開虛擬機(jī),找到1.1.3源碼根目錄,選擇在終端打開。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
查看具體用法。
hb build -hps:語法是 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: 注意逗號(hào)。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
單獨(dú)編譯組件。
hb build -f testdemo
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
- ps:在輕量系統(tǒng)中,單獨(dú)編譯的目標(biāo)或組件,不能獨(dú)立運(yùn)行,適合發(fā)現(xiàn)編譯錯(cuò)誤。
燒錄運(yùn)行的話,需要進(jìn)行固件的全量編譯。
hb build -f
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
六、燒錄固件
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
七、運(yùn)行
燒錄完成之后,打開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ū)動(dòng)模塊: driver
- 庫模塊: library
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
三、編寫各模塊源碼
- ps:每寫完一個(gè)文件記得保存。
先是application模塊,建立一個(gè)子模塊的c文件和頭文件。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
子模塊的c文件include對(duì)應(yīng)的頭文件。
- ps: 爆紅只需要點(diǎn)擊黃色小燈泡,添加到includePath即可 不會(huì)添加的可以看我的上一篇文章。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
新建一個(gè)主程序文件。
【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兩個(gè)模塊的頭文件。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
四、編寫各模塊腳本
先編寫application模塊腳本。
- ps: cflags是編譯參數(shù) 這三種情況在默認(rèn)編譯方式下是不允許的,會(huì)引發(fā)編譯錯(cuò)誤,設(shè)置這三個(gè)參數(shù)后,編譯系統(tǒng)會(huì)把它們不當(dāng)作錯(cuò)誤來處理。
【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。
修改三個(gè)模塊的編譯。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)
六、編譯燒錄運(yùn)行
設(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ū)
運(yùn)行成功。
【OpenHarmony編譯構(gòu)建系統(tǒng)】介紹新增組件以及組件模塊開發(fā)-開源基礎(chǔ)軟件社區(qū)





























