Github-CI:
| OS \ Build system | Bazel |
|---|---|
Linux (amd64) |
|
MacOS (amd64) |
|
MacOS (arm64) |
|
Windows (amd64) |
Provided rules:
pybind_extension: Builds a python extension, automatically adding the required build flags and pybind11 dependencies. It defines a target which can be included as adatadependency of apy_*target.pybind_library: Builds a C++ library, automatically adding the required build flags and pybind11 dependencies. This library can then be used as a dependency of apybind_extension. The arguments match acc_library.pybind_library_test: Builds a C++ test for apybind_library. The arguments match acc_test.
To test a pybind_extension, the most common approach is to write the test in
Python and use the standard py_test build rule.
To embed Python, add @rules_python//python/cc:current_py_cc_libs as a
dependency to your cc_binary.
In your WORKSPACE file:
http_archive(
name = "pybind11_bazel",
strip_prefix = "pybind11_bazel-<version>",
urls = ["https://github.com/pybind/pybind11_bazel/archive/v<version>.zip"],
)
# We still require the pybind library.
http_archive(
name = "pybind11",
build_file = "@pybind11_bazel//:pybind11-BUILD.bazel",
strip_prefix = "pybind11-<version>",
urls = ["https://github.com/pybind/pybind11/archive/v<version>.zip"],
)Then, in your BUILD file:
load("@pybind11_bazel//:build_defs.bzl", "pybind_extension")In your MODULE.bazel file:
bazel_dep(name = "pybind11_bazel", version = "<version>")Usage in your BUILD file is as described previously.