Bazel 的多平台使用:OSX+homebrew 和 linux+{rpm,dpkg}

问题描述 投票:0回答:1

如何使用

bazel
在具有外部依赖项的不同平台上从相同的源代码构建?

  • 在 OSX 上它应该使用安装的自制程序包
  • 在 Debianish 上它应该使用相应的 dpkg
  • 在 Redhatish 上它应该使用相应的 rpm

autoconf 样式中也可能有平台相关的标志,应该传递给编译器。

我主要关心 C 和 C++

homebrew bazel multiplatform
1个回答
0
投票

Bazel 中有一个名为

select()
的功能,它允许用户在具有外部依赖项的不同平台上切换构建规则属性的值

例如,这可以用于自动为体系结构选择适当实现的多平台库,或者用于可以在构建时自定义的功能可配置二进制文件。 例如:

sh_binary(
    name = "my_target",
    srcs = ["my_target.sh"],
    hdrs = ["my_target.h"],
    deps = select({
        "<condition>": ["<source>: dependency",],
       ...
       ...
       ...
    }),
)

这也记录在 Bazel select 和 dependencies.

© www.soinside.com 2019 - 2024. All rights reserved.