Gn 如何构建树外品红操作系统程序

Gn 如何构建树外品红操作系统程序,gn,fuchsia,Gn,Fuchsia,安装和构建Fuchsia OS后,我可以将示例hello world程序中的字符串从“hello,world!\n”修改为“hello,Fuchsia!\n”。 然后,我使用以下命令执行生成预期字符串“Hello,Fuchsia!”的代码: 这对于理解如何改变部分品红“分布”是很好的。如何在紫红色树之外创建自己的程序?我假设在创建在Fuchsia操作系统上运行的程序时,人们通常会这样做,以便能够干净地管理源代码。Answer 第三方目录用于在紫红色树之外管理的模块。在顶级.gitignore中,

安装和构建Fuchsia OS后,我可以将示例hello world程序中的字符串从“hello,world!\n”修改为“hello,Fuchsia!\n”。 然后,我使用以下命令执行生成预期字符串“Hello,Fuchsia!”的代码:

这对于理解如何改变部分品红“分布”是很好的。如何在紫红色树之外创建自己的程序?我假设在创建在Fuchsia操作系统上运行的程序时,人们通常会这样做,以便能够干净地管理源代码。

Answer
第三方
目录用于在紫红色树之外管理的模块。在顶级
.gitignore
中,目录被排除():

您可以看到这个文件夹在git()中大部分是空的。它首先在bootstrap()期间填充,bootstrap()在内部使用
jiri update
获取集成清单中指定的repo(例如for)

您将在一个单独的
git
repo中维护您的模块。为了便于开发,您可以将此repo克隆到第三方的子目录中。由于
.gitignore
条目,它不会被紫红色
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\u world.cc

#include <iostream>

int main(int argc, char** argv) {
  std::cout << "Hello, World (out-of-tree)!" << std::endl;
  return 0;
}
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"
    },
  ]
}
#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)!