如何构建 out-of-tree Fuchsia OS 程序
How to build out-of-tree Fuchsia OS program
安装并构建 Fuchsia OS 后,我可以将示例 hello world 程序中的字符串从 "Hello, World!\n" 修改为 "Hello, Fuchsia!\n"。
然后我 build 并执行生成预期字符串的代码 "Hello, Fuchsia!" 使用:
cd fuchsia
fx set bringup.x64 --with //examples/hello_world
fx build; fx qemu
hello_world_cpp
这对于了解如何更改 Fuchsia 的一部分非常有用 "distribution"。如何在紫红色树之外创建自己的程序?我假设在 Fuchsia OS 上为 运行 创建程序时通常会这样做,这样就可以干净地管理源代码。
回答
third_party
目录用于在 Fuchsia 树之外管理的模块。在顶层 .gitignore
中排除目录 (link):
/third_party/*
您可以在 git (link). It is first populated during bootstrap (link), which internally uses jiri update
to fetch repos specified in the integration manifest (e.g. for third_party
) 中看到此文件夹大部分是空的。
您将在单独的 git
存储库中维护您的模块。对于开发,您可以将此存储库克隆到 third-party
中的子目录中。由于 .gitignore
条目,它不会被 Fuchsia git
.
跟踪
例子
文件:
third_party/hello_world/BUILD.gn
third_party/hello_world/hello_world.cc
BUILD.gn
:
import("//build/package.gni")
group("hello_world") {
deps = [ ":hello-world-cpp" ]
}
executable("bin") {
output_name = "my_hello_world_cpp"
sources = [ "hello_world.cc" ]
}
package("hello-world-cpp") {
deps = [ ":bin" ]
binaries = [
{
name = "my_hello_world_cpp"
},
]
}
hello_world.cc
:
#include <iostream>
int main(int argc, char** argv) {
std::cout << "Hello, World (out-of-tree)!" << std::endl;
return 0;
}
构建和运行:
$ fx set bringup.x64 --with //third_party/hello_world
$ fx build
$ fx qemu
$ my_hello_world_cpp
Hello, World (out-of-tree)!
安装并构建 Fuchsia OS 后,我可以将示例 hello world 程序中的字符串从 "Hello, World!\n" 修改为 "Hello, Fuchsia!\n"。 然后我 build 并执行生成预期字符串的代码 "Hello, Fuchsia!" 使用:
cd fuchsia
fx set bringup.x64 --with //examples/hello_world
fx build; fx qemu
hello_world_cpp
这对于了解如何更改 Fuchsia 的一部分非常有用 "distribution"。如何在紫红色树之外创建自己的程序?我假设在 Fuchsia OS 上为 运行 创建程序时通常会这样做,这样就可以干净地管理源代码。
回答
third_party
目录用于在 Fuchsia 树之外管理的模块。在顶层 .gitignore
中排除目录 (link):
/third_party/*
您可以在 git (link). It is first populated during bootstrap (link), which internally uses jiri update
to fetch repos specified in the integration manifest (e.g. for third_party
) 中看到此文件夹大部分是空的。
您将在单独的 git
存储库中维护您的模块。对于开发,您可以将此存储库克隆到 third-party
中的子目录中。由于 .gitignore
条目,它不会被 Fuchsia git
.
例子
文件:
third_party/hello_world/BUILD.gn
third_party/hello_world/hello_world.cc
BUILD.gn
:
import("//build/package.gni")
group("hello_world") {
deps = [ ":hello-world-cpp" ]
}
executable("bin") {
output_name = "my_hello_world_cpp"
sources = [ "hello_world.cc" ]
}
package("hello-world-cpp") {
deps = [ ":bin" ]
binaries = [
{
name = "my_hello_world_cpp"
},
]
}
hello_world.cc
:
#include <iostream>
int main(int argc, char** argv) {
std::cout << "Hello, World (out-of-tree)!" << std::endl;
return 0;
}
构建和运行:
$ fx set bringup.x64 --with //third_party/hello_world
$ fx build
$ fx qemu
$ my_hello_world_cpp
Hello, World (out-of-tree)!