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