Как мне создать пакет Buckaroo из библиотеки только для заголовков? - PullRequest
0 голосов
/ 22 февраля 2019

Имеется библиотека только для заголовков, подобная этой:

└── foo
    ├── bar.hpp
    └── foo.hpp

Как мне упаковать это, используя Buckaroo ?

1 Ответ

0 голосов
/ 22 февраля 2019

Страница Buckaroo Wiki упоминает процесс:

Сначала запустите buckaroo init, чтобы сгенерировать .buckconfig и buckaroo_macros.bzl.

Затем вам понадобитсяотредактировать два файла:

  1. BUCK - описывает сборку

  2. buckaroo.toml - описывает внешние зависимости

BUCK:

Следующий файл BUCK упаковывает ваши заголовки, так что каждый файл может быть включен через #include <foo/*.hpp>:

cxx_library(
  name = 'foo',
  header_namespace = '', 
  exported_headers = glob(['foo/*.hpp']),
  visibility = ['PUBLIC'],
)

Это эквивалентно:

cxx_library(
  name = 'foo',
  header_namespace = '', 
  exported_headers = {
    'foo/foo.hpp': 'foo/foo.hpp',
    'foo/bar.hpp': 'foo/bar.hpp',
  },
  visibility = ['PUBLIC'],
)

Эта карта описывает, как путь, определенный в #include <a/b/c.h>, сопоставляется с реальными файлами в файловой системе.Поскольку include-путь идентичен разметке вашей файловой системы, ключи и значения идентичны.

buckaroo.toml

Чтобы сделать установку вашего пакета удобной дляпотребителям, рекомендуется явно перечислить общедоступные пакеты, которые должны быть экспортированы по умолчанию, в разделе целей в buckaroo.toml

targets = [ "//:foo" ]

Если у вас есть внешние зависимости, вы можете установить их через buckaroo add URL@VERSION

и подключите зависимости в вашем файле BUCK:

load('//:buckaroo_macros.bzl', 'buckaroo_deps')

cxx_library(
  name = 'foo',
  // ...
  deps = buckaroo_deps(),
  visibility = ['PUBLIC'],
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...