鴻蒙構(gòu)建系統(tǒng)——GN官方FAQ翻譯,以及GN官方文檔分享
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com/#zz
GN FAQ 翻譯
(PS:花了將近半個(gè)小時(shí),把GN的官方FAQ翻譯了一遍,有錯(cuò)漏之處歡迎大家指正。)
GN 的文檔在哪里?
GN有大量的內(nèi)置的幫助文檔,所以你可以運(yùn)行g(shù)n help命令查閱,但是你同樣可以在“參考頁面”(PS:附件文檔包中的gn-reference.pdf)查閱全部幫助文檔。你同樣可以查閱“快速入門指南”(PS:附件文檔包中的gn-quick_start.pdf)和“語言和操作細(xì)節(jié)”(PS:附件文檔包中的gn-language.pdf)。
我可以生成XCode或者Visual Studio項(xiàng)目嗎?
你可以用一次構(gòu)建(PS: gn是兩階段構(gòu)建的工具)為XCode,Visual Studio,QTCreator和Eclipse生成帶有文件列表和目標(biāo)的骨架(或包裝)項(xiàng)目,但是使用 Ninja執(zhí)行實(shí)際的構(gòu)建(PS:第二次構(gòu)建)。你不能像使用GYP cloud那樣生成真的看起來和這些工具直接創(chuàng)建的一樣的項(xiàng)目。
了解詳細(xì)內(nèi)容,請(qǐng)運(yùn)行g(shù)n help gen。
我如何生成一般的構(gòu)建變種(build variants)?
在GN中,參數(shù)在構(gòu)建目錄中,而不是在全局環(huán)境中。要編輯你的`out/Default`構(gòu)建目錄下的參數(shù),執(zhí)行:
gn args out/Default
(PS: 這個(gè)命令會(huì)打開一個(gè)編輯器(默認(rèn)是vim),查看的話用這個(gè)命令:gn args out/Default --list)
你可以在這個(gè)文件中設(shè)置變量:
- 默認(rèn)是debug構(gòu)建,改為release構(gòu)建,添加:is_debug = false
- 默認(rèn)是靜態(tài)編譯,改為組件編譯,添加:is_component_build = true
- 默認(rèn)是developer構(gòu)建,改為offical構(gòu)建,添加:is_offical_build = true
- 默認(rèn)是chromium構(gòu)建,改為Chrome構(gòu)建,設(shè)置:is_chrome_build = true
我如何進(jìn)行交叉編譯?
GN有健壯的交叉編譯和一次構(gòu)建生成多個(gè)架構(gòu)文件的支持。
詳細(xì)信息,請(qǐng)查閱GN交叉編譯文檔(cross_compile.md)。
我可以控制默認(rèn)編譯什么目標(biāo)嗎?
可以!你可以在頂層目錄的構(gòu)建文件中創(chuàng)建一個(gè)叫做“default”的組目標(biāo),例如“//:default”,GN將會(huì)告訴ninja默認(rèn)編譯這個(gè)目標(biāo),而不是編譯所有的目標(biāo)。
有關(guān)于GN的公開演示講解嗎?
這里有一個(gè)最近的,2015年的。從那之后,除了將gn變?yōu)橐粋€(gè)獨(dú)立的代碼倉之外,沒有什么太大的變化,所以仍然是相關(guān)的。
-------------------------------- 分割線 --------------------------------
以下是我補(bǔ)充的兩個(gè)自問自答 ;-)
為什么翻譯這個(gè)FAQ?
學(xué)習(xí)知識(shí)講究追本溯源,具體到學(xué)習(xí)軟件開發(fā),往往就是查閱官方文檔和代碼。
鴻蒙使用gn(Generate Ninja)作為構(gòu)建系統(tǒng),而 gn 是由谷歌開發(fā)的,目前能夠找到的文檔基本上都是英文的。
FAQ是幾個(gè)文檔中間比較短小的一篇,同時(shí)也是初學(xué)者容易有疑問的地方。
為什么搬運(yùn)這些資料?
gn項(xiàng)目官網(wǎng):https://gn.googlesource.com/gn/
由于國內(nèi)部分網(wǎng)絡(luò)條件下無法訪問 googlesource.com ,這給廣大開發(fā)者查閱gn官方文檔帶了很大的不便。
本帖附件的幾個(gè)資料包分別是:
1. gn源碼包:gn.zip ;
2. gn文檔包:gn-docs.zip ;
3. 谷歌大佬關(guān)于GN分享的PPT:Using GN build.pdf
歡迎大家下載查閱。
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com/#zz