大家好,今天我們來談一談編程時一個很有趣的話題——編譯順序。
首先呢,得看看這個"vendor/xradio/xr806/config.json",這可是個關(guān)鍵角色。它就像是一個交通警察,告訴編譯器:“嘿,你得先編譯這個,然后再編譯那個?!逼渲械?product_name"就是交通警察手中的指揮棒,它決定了執(zhí)行hb set時會出現(xiàn)的選項。
而"device_company"、"board"、"kernel_type"這三位則是一同決定了代碼的行走路徑。
當(dāng)你用hb set選定了"wifi_skylark"后,就會在根目錄中生成一個叫做ohos_config.json的文件。這個文件就像是一張地圖,上面清楚地標(biāo)明了各個代碼文件應(yīng)該放置的位置。這樣,編譯器就知道去哪里找這些代碼了。
然后,當(dāng)你執(zhí)行hb build -f命令時,HarmonyOS的編譯腳本就會從device_path中獲取編譯工具和編譯選項,從product_path下尋找BUILD.gn文件。這個過程就像是在準備一場演出,編譯工具是音響設(shè)備,編譯選項是音量調(diào)節(jié)器,而BUILD.gn文件則是節(jié)目單。
BUILD.gn文件中的內(nèi)容可是相當(dāng)精彩的。其中build_ext_component("libSDK")就像是一個大明星,有很多依賴項需要先行準備。這些依賴項就像是它的伴舞團隊和樂隊,得提前到位才能確保演出的順利進行。
同樣的道理也適用于group("xr806")和ohosdemo/BUILD.gn中的內(nèi)容。這些文件和文件夾都需要按照一定的順序進行編譯,才能確保整個程序的順利運行。
最后呢,當(dāng)你打開hello_demo/BUILD.gn時,你會看到import("http://device/xradio/xr806/liteos_m/config.gni")這句話。這就像是在演出開始前,主持人走上臺說:“感謝大家的支持,現(xiàn)在我們開始演出!”然后,static_library("app_hello")就像是第一個節(jié)目,閃亮登場!
你想想看,一群代碼如果不按照順序來,豈不是亂成一鍋粥了?好在Harmony給我們提供了明確的編譯順序,讓代碼們可以乖乖排隊,一個個等待被編譯。
所以說啊,編譯順序可是個大學(xué)問。只有掌握了正確的順序,才能讓代碼們和諧共處,共同演繹出一場精彩的程序運行秀!
以XR806_OpenHarmony為例,當(dāng)你通過hb set選定wifi_skylark后,會在根目錄中生成一個叫ohos_config.json
的文件。這個文件里主要包括以下內(nèi)容:
{
"root_path": "/home/workspace/Harmony_XR806",
"board": "xr806",
"kernel": "liteos_m",
"product": "wifi_skylark",
"product_path": "/home/workspace/Harmony_XR806/vendor/xradio/xr806",
"device_path": "/home/workspace/Harmony_XR806/device/xradio/xr806/liteos_m"
}
然后,當(dāng)你執(zhí)行hb build -f時,HarmonyOS的編譯腳本就會從device_path
中獲取編譯工具和編譯選項,然后從product_path
下尋找BUILD.gn
文件。
現(xiàn)在讓我們看看這個BUILD.gn
文件的內(nèi)容:
build_ext_component("libSDK") {
exec_path = rebase_path(".", root_build_dir)
outdir = rebase_path("$root_out_dir")
command = "./build.sh ${outdir}"
deps = [
"http://kernel/liteos_m:kernel", #(3)
"os:liteos_glue",
"adapter/hals:adapter",
"adapter/console:app_console",
"ohosdemo:ohosdemo", #(2)
]
}
group("xr806") {
deps = [
":libSDK" #(1)
]
}
這里有三個需要注意的地方:
1.deps
關(guān)鍵字代表執(zhí)行g(shù)roup("xr806")前需要先執(zhí)行l(wèi)ibSDK,也就是build_ext_component("libSDK")
。
2.在執(zhí)行build_ext_component("libSDK")
前,需要先找到ohosdemo文件夾下的BUILD.gn
,并且這個文件里會有ohosdemo的定義。
3.//
代表絕對路徑,可以理解為根目錄。比如//kernel/liteos_m
代表根目錄下的kernel/liteos_m
文件夾。
最后,關(guān)于演示部分:
XR806_OpenHarmony串口默認配置為:波特率115200,無校驗,8位數(shù)據(jù)位,1位停止位。開發(fā)板成功連接PC上對串口調(diào)試助手后按下開發(fā)板的復(fù)位按鍵串口輸出。這段文字描述了如何配置串口以及如何通過串口輸出信息。
當(dāng)你連接開發(fā)板到PC并使用串口調(diào)試助手進行調(diào)試時,你可以通過發(fā)送復(fù)位信號來啟動應(yīng)用程序,然后你將看到“Hello World!”消息輸出到串口上。
-
調(diào)節(jié)器
+關(guān)注
關(guān)注
5文章
848瀏覽量
46417 -
串口輸出
+關(guān)注
關(guān)注
0文章
16瀏覽量
7490 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3722瀏覽量
16320 -
xr806
+關(guān)注
關(guān)注
0文章
14瀏覽量
1323
發(fā)布評論請先 登錄
相關(guān)推薦
評論