必要條件
本教學課程是以編譯 FIDL 教學課程為基礎。對於 完整的 FIDL 教學課程,請參閱總覽。
總覽
本教學課程會逐步介紹如何使用
fostr
工具。
若您想要自行編寫程式碼,請刪除下列目錄:
rm -r examples/fidl/hlcpp/fostr farnet/public/lib/fostr/fidl
本教學課程包含下列步驟:
- 為 FIDL 程式庫定義
fostr_fidl
目標,這將允許針對以下項目啟用偵錯列印: 在程式庫中為各個型別定義一個operator<<
。 - 使用
fostr_fidl
目標。 - 使用格式設定工具程式碼編寫範例。
定義 fostr_fidl 目標
在
//src/lib/fostr/fidl
中為 BUILD 檔案建立目錄:mkdir -p src/lib/fostr/fidl/fuchsia.examples
建立 BUILD 檔案:
touch src/lib/fostr/fidl/fuchsia.examples/BUILD.gn
將以下定義新增至建構檔案:
# Copyright 2020 The Fuchsia Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//src/lib/fostr/build/fostr_fidl.gni") fostr_fidl("fuchsia.examples") { fidl_target = "//examples/fidl/fuchsia.examples" }
這會為 fuchsia.examples
程式庫定義 fostr
目標。不限
您必須在建構檔案中指定程式庫的依附元件。
則不適用於本教學課程。如需更複雜的
請參閱類別 fidl
目錄中的現有定義。
在 fostr_fidl 目標中新增依附元件
本教學課程使用的目標程式庫是簡單的主機測試,
位於examples/fidl/hlcpp/fostr
。請注意,測試用的 BUILD 檔案
包含 fostr_fidl
目標做為依附元件:
executable("bin") {
testonly = true
output_name = "fostr_example_test"
sources = [ "main.cc" ]
deps = [
"//examples/fidl/fuchsia.examples:fuchsia.examples_hlcpp",
"//src/lib/fostr/fidl/fuchsia.examples",
"//src/lib/fxl/test:gtest_main",
]
}
加入的程式庫會自動超載 <<
運算子。路徑
依據產生下列項目的 FIDL 程式庫名稱:
#include <src/lib/fostr/fidl/fuchsia/examples/formatting.h>
使用格式設定工具程式碼編寫範例
撰寫一些預留位置測試來展示輸出內容:
TEST(FidlExamples, Bits) {
auto flags = fuchsia::examples::FileMode::READ | fuchsia::examples::FileMode::WRITE;
std::cout << flags << std::endl;
}
TEST(FidlExamples, Enums) {
auto enum_val = fuchsia::examples::LocationType::MUSEUM;
std::cout << enum_val << std::endl;
}
TEST(FidlExamples, Structs) {
fuchsia::examples::Color default_color;
std::cout << default_color << std::endl;
}
TEST(FidlExamples, Unions) {
auto int_val = fuchsia::examples::JsonValue::WithIntValue(1);
std::cout << int_val << std::endl;
}
執行範例
如要執行範例,請按照下列步驟操作:
設定 GN 版本以包含範例:
fx set core.x64 --with //examples/fidl/hlcpp/fostr
執行測試:
fx test -vo fostr-example-test