本文件將概述如何查看產生的 FIDL 繫結程式碼。有關如何轉換 FIDL 定義的一般資訊 要翻譯成目標語言代碼,請參閱繫結參考資料。
整個執行範例都會使用 FIDL 程式庫 fuchsia.io
。是
在 //sdk/fidl/fuchsia.io 中定義的值。
查看產生的程式碼
本節說明如何直接存取產生的程式碼檔案。
GN 版本
您可以在
Fuchsia 建構時,可以先建立相關目標,再檢查
預先產生的檔案。本節的操作說明會假設
指定目標是使用標準 fidl
GN 範本定義,以及
將建構目錄設為預設路徑 (out/default
)。fx status
即可用來找出目前的建構目錄
您可以在 fidling
工具鍊的 GN 建構作業中找到大部分的 FIDL 輸出內容。適用對象
fuchsia.io
,輸出內容的根為
out/default/fidling/gen/sdk/fidl/fuchsia.io
。本文件的其他部分
並設為根目錄其結構如下:
out/default/fidling/gen/sdk/fidl/fuchsia.io
├── fuchsia.io.fidl.json
└── fuchsia.io
├── fidl_fuchsia_io.rs
├── fuchsia.io.fidl
│ └── impl.go
├── c
│ └── fuchsia
│ └── io
│ └── c
│ ├── fidl.h
│ ├── fidl.client.c
│ └── fidl.server.c
├── cpp
│ └── fidl
│ └── fuchsia.io
│ └── cpp
│ ├── common_types.cc
│ ├── common_types.h
│ ├── driver
│ │ ├── fidl.h
│ │ ├── natural_messaging.cc
│ │ ├── natural_messaging.h
│ │ ├── wire.h
│ │ ├── wire_messaging.cc
│ │ └── wire_messaging.h
│ ├── fidl.h
│ ├── hlcpp_conversion.h
│ ├── markers.h
│ ├── natural_messaging.cc
│ ├── natural_messaging.h
│ ├── natural_types.cc
│ ├── natural_types.h
| ├── test_base.h
│ ├── type_conversions.cc
│ ├── type_conversions.h
│ ├── wire.h
│ ├── wire_messaging.cc
│ ├── wire_messaging.h
│ ├── wire_test_base.h
│ ├── wire_types.cc
│ └── wire_types.h
└── hlcpp
└── fuchsia
└── io
└── cpp
├── fidl.h
├── fidl.cc
└── fidl_test_base.h
許多產生的程式碼路徑似乎包含重複的目錄名稱,例如
.../fuchsia.io/fuchsia.io/...
。這是因為 FIDL 程式庫通常
定義於以程式庫命名的目錄中,並以
資源庫。第一個fuchsia.io
來自目錄,第二個則來自
選擇該 GN 目標名稱
JSON IR
JSON IR 會在根目錄中以 ${target_name}.fidl.json
的形式產生。
例如,使用 fuchsia.io
:
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io.fidl.json
荒漠油廠
系統會在根目錄中產生 Rust 繫結,做為
${target_name}/${rust_name}.rs
,其中 ${rust_name}
衍生自
程式庫名稱,以底線取代半形句號。例如,使用 fuchsia.io
:
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/fidl_fuchsia_io.rs
查看
系統會在根目錄中產生 Go 繫結,如下所示:
${target_name}/${library_name}.fidl/impl.go
。例如,使用 fuchsia.io
:
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/fuchsia.io.fidl/impl.go
C++
新的 C++ 繫結會在根目錄使用來源版面配置
目錄,請採用下列格式:${target_name}/${binding_flavor}/fuchsia.io/cpp
。
C++ 會接著輸出 wire_types.h
、wire_types.cc
、wire_messaging.h
,
wire_messaging.cc
、wire.h
和 wire_test_base.h
用於使用線路類型,以及
natural_types.h
、natural_types.cc
、natural_messaging.h
、
natural_messaging.cc
、test_base.h
、fidl.h
(適用於使用自然型別)
旁邊顯示出幾種電線類型
common_types.h
和 markers.h
由線路和自然類型共用。
舉例來說,使用 fuchsia.io
搭配 C++ 繫結時,系統會建立以下項目:
檔案:
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/markers.h
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/common_types.h
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/common_types.cc
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/wire_types.h
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/wire_types.cc
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/wire_messaging.h
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/wire_messaging.cc
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/wire.h
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/wire_test_base.h
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/natural_types.h
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/natural_types.cc
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/natural_messaging.h
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/natural_messaging.cc
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/test_base.h
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/type_conversions.h
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/type_conversions.cc
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/hlcpp_conversion.h
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/cpp/fidl/fuchsia.io/cpp/fidl.h
新的 C++ 繫結採用形狀時,會遵循這個模式。 請參閱下方說明,瞭解如何產生尚未整合的繫結。
HLCPP 和 C
HLCPP 和 C 繫結是在根目錄的子目錄中產生
遵循 ${target_name}/${binding_flavor}/fuchsia/io
模式。接著
- HLCPP 會輸出
cpp/fidl.cc
、cpp/fidl.h
和cpp/fidl_test_base.h
。 - C 會輸出
c/fidl.client.c
、c/fidl.server.c
和fidl.h
。
舉例來說,使用 fuchsia.io
搭配 HLCPP 繫結,即可建立
下列檔案:
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/hlcpp/fuchsia/io/cpp/fidl.cc
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/hlcpp/fuchsia/io/cpp/fidl.h
out/default/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io/hlcpp/fuchsia/io/cpp/fidl_test_base.h
查看產生的說明文件
荒漠油廠
Fuchsia 中使用的所有 Rust Crate 的說明文件,內含
FIDL 程式庫在網路上託管於
fuchsia-docs.firebaseapp.com.
你可以使用 fx rustdoc
產生離線文件。