編譯器介面
總覽
FIDL 編譯器分為前端和多個後端。編譯器會處理 一次只能下載一個圖像前端會使用程式庫 (以及所有) 的 FIDL 宣告 遞移依附元件)、執行語意分析,並輸出 程式庫。後端會耗用中繼表示法,並產生特定語言專屬的內容 程式庫的繫結欄位。
前端
前端是名為 fidlc
的指令列程式。fidlc
編譯器有以下標記:
--json JSON_PATH
。如果有這個標記,此標記會指示fidlc
輸出程式庫的中繼資訊 物件表示法中繼表示法是 JSON,符合 特定結構定義中繼表示法會使用 將輸入內容傳入多個後端--name LIBRARY_NAME
。如果有這個標記,此標記會指示fidlc
驗證程式庫 都會包含特定名稱這個旗標很適合交叉檢查程式庫的 以及程式庫的實際內容。--files [FIDL_FILE...]...
。每個--files [FIDL_FILE...]
引數區塊都描述一個 程式庫,而且所有元件都必須共用相同的頂層程式庫名稱宣告。資料庫必須是 依依附元件順序呈現,讓後續的程式庫可以使用前述的宣告 反之亦然系統只會針對最終程式庫產生輸出內容,不會針對各個程式庫產生輸出內容 導入抽象化機制
所有旗標也可透過回應檔案 (以 @responsefile
表示) 提供。
系統會將 responsefile
的檔案內容解讀為以空白字元分隔的清單
引數。回應檔案不得建立巢狀結構,且必須是唯一的引數。
後端
後端是名為 fidlgen
的指令列程式。fidlgen
編譯器有以下標記:
--json
。這是必要項目。程式庫中繼表示法的路徑。 中繼表示法是 JSON,符合特定 結構定義。--generators
。這是必要項目。要在指定程式庫上執行的產生器,以半形逗號分隔的清單。 支援的產生器如下:cpp
、go
、dart
和rust
。--output-base
。這是必要項目。這個產生器產生的檔案基準檔案名稱。 產生器會在檔案名稱中加入副檔名,藉此建立檔案。例如:cpp
後端會產生兩個檔案,一個副檔名為.h
,另一個具有.cc
副檔名。--include-base
。這是必要項目。與 C 和 C++#include
相關的基本目錄 指令。舉例來說,當cpp
後端產生#include
指令會從.cc
檔案中參照.h
檔案,後端會建立#include
相對於這個目錄的路徑
限制
如果是 cpp
後端,產生的 .h
檔案必須可納入為 #include
<fuchsia/cpp/$LIBRARY_NAME.h>
,其中 $LIBRARY_NAME
是對應 FIDL 的名稱
資源庫。通常這表示 --output-base
旗標將具有值
$INCLUDE_BASE/fuchsia/cpp/$LIBRARY_NAME
,其中 $INCLUDE_BASE
是
--include-base
標記。
林地
FIDL Linter 是處理一或多個 FIDL 的命令列程式 檔案,也會針對已編譯的內容 (技術上有效的 FIDL) 發出警告 但似乎違反 FIDL 樣式指南或 FIDL 的規則 API 評分量表。強制執行樣式慣例 難以偵測的評分量表指南
可讀性很重要,風格正是其中元件。此外, 按照這些指南操作,即可確保 FIDL API 的跨語言可攜性。
使用 fx lint
Fuchsia 包含 fx lint
指令,可自動選取並執行
為每個一組特定檔案套用適當的程式碼 Linterfx lint
套
所有副檔名為 .fidl
的檔案,並將這些檔案一起傳遞至 FIDL
Linter 指令 fidl-lint
。
建議您使用 fx lint
叫用 FIDL Linter,在理想情況下
執行,然後再上傳新的 FIDL 程式庫或變更現有 FIDL。沒有任何
引數之後,fx lint
會在您大部分
近期「git commit
」。
fx lint
如要查看其他可用選項,請執行:
fx lint --help
格式設定工具
FIDL 格式設定工具是將 .fidl 檔案格式的命令列程式。是
自動建構於 fx format-code
指令中,且會為任何
修改的 FIDL 檔案:
fx format-code