如何从仅标头的库中创建Buckaroo包?

时间:2019-02-21 22:24:50

标签: c++ buckaroo

给出如下所示的仅标头的库:

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

如何使用Buckaroo打包?

1 个答案:

答案 0 :(得分:1)

Buckaroo Wiki Page提到了该过程:

首先,运行buckaroo init来生成.buckconfigbuckaroo_macros.bzl

然后,您将需要编辑两个文件:

  1. BUCK-它描述了构建

  2. buckaroo.toml-描述您的外部依赖项

降压:

以下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>中定义的路径如何映射到文件系统中的实际文件。由于包含路径与文件系统布局相同,因此键和值相同。

buckaroo.toml

为了使安装包对消费者方便,建议在buckaroo.toml

的targets部分中明确列出默认情况下应导出的公共软件包。
targets = [ "//:foo" ]

如果您具有外部依赖项,则可能要通过以下方式安装它们 buckaroo add URL@VERSION

并在您的BUCK文件中连接依赖项:

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

cxx_library(
  name = 'foo',
  // ...
  deps = buckaroo_deps(),
  visibility = ['PUBLIC'],
)