1. 程式人生 > 實用技巧 >鴻蒙構建系統——gn官方FAQ翻譯,以及gn官方文件分享

鴻蒙構建系統——gn官方FAQ翻譯,以及gn官方文件分享

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#bky