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