Как собрать программу для ОС Fuchsia из дерева - PullRequest
1 голос
/ 28 марта 2020

После установки и сборки ОС Fuchsia я могу изменить строку в примере программы hello world с «Hello, World! \ N» на «Hello, Fuchsia! \ N». Затем я строю и выполняю код, который выдает ожидаемую строку "Hello, Fuchsia!" используя:

cd fuchsia
fx set bringup.x64 --with //examples/hello_world
fx build; fx qemu
hello_world_cpp

Это хорошо для понимания того, как изменить часть «распределения» фуксии. Как создать свою собственную программу вне дерева фуксий? Я предполагаю, что это можно было бы сделать обычно при создании программы для запуска на ОС Fuchsia, чтобы можно было аккуратно управлять источником.

1 Ответ

1 голос
/ 20 апреля 2020

Ответ

Каталог third_party предназначен для модулей, которые управляются вне дерева фуксий. На верхнем уровне .gitignore каталог исключен ( ссылка ):

/third_party/*

Вы можете видеть, что эта папка в основном пуста в git ( ссылка ). Сначала он заполняется во время bootstrap ( link ), который внутренне использует jiri update для получения репозиториев, указанных в манифесте интеграции (например, для third_party).

Вы бы содержали свой модуль в отдельном git репо. Для разработки вы должны клонировать этот репозиторий в подкаталог в third-party. Из-за записи .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_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)!
...