https://github.com/pybind/pybind11_bazel
Bazel wrapper around the pybind11 repository
https://github.com/pybind/pybind11_bazel
Last synced: 8 days ago
JSON representation
Bazel wrapper around the pybind11 repository
- Host: GitHub
- URL: https://github.com/pybind/pybind11_bazel
- Owner: pybind
- License: other
- Created: 2019-10-03T09:25:05.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2026-03-30T07:42:21.000Z (14 days ago)
- Last Synced: 2026-04-05T17:44:25.553Z (8 days ago)
- Language: Starlark
- Size: 85 KB
- Stars: 115
- Watchers: 10
- Forks: 67
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Authors: AUTHORS
Awesome Lists containing this project
README
# Bazel extensions for pybind11
Github-CI:
| OS \ Build system | Bazel |
|:------- | :---: |
| Linux (`amd64`) | [![Build Status][amd64_linux_bazel_status]][amd64_linux_bazel_link] |
| MacOS (`amd64`) | [![Build Status][amd64_macos_bazel_status]][amd64_macos_bazel_link] |
| MacOS (`arm64`) | [![Build Status][arm64_macos_bazel_status]][arm64_macos_bazel_link] |
| Windows (`amd64`) | [![Build Status][amd64_windows_bazel_status]][amd64_windows_bazel_link] |
[amd64_linux_bazel_status]: ./../../actions/workflows/amd64_linux_bazel.yml/badge.svg
[amd64_linux_bazel_link]: ./../../actions/workflows/amd64_linux_bazel.yml
[amd64_macos_bazel_status]: ./../../actions/workflows/amd64_macos_bazel.yml/badge.svg
[amd64_macos_bazel_link]: ./../../actions/workflows/amd64_macos_bazel.yml
[arm64_macos_bazel_status]: ./../../actions/workflows/arm64_macos_bazel.yml/badge.svg
[arm64_macos_bazel_link]: ./../../actions/workflows/arm64_macos_bazel.yml
[amd64_windows_bazel_status]: ./../../actions/workflows/amd64_windows_bazel.yml/badge.svg
[amd64_windows_bazel_link]: ./../../actions/workflows/amd64_windows_bazel.yml
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 a `data` dependency of a `py_*` 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 a `pybind_extension`. The arguments match a `cc_library`.
- `pybind_library_test`: Builds a C++ test for a `pybind_library`. The
arguments match a `cc_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`.
## Installation
In your `WORKSPACE` file:
```starlark
http_archive(
name = "pybind11_bazel",
strip_prefix = "pybind11_bazel-",
urls = ["https://github.com/pybind/pybind11_bazel/archive/v.zip"],
)
# We still require the pybind library.
http_archive(
name = "pybind11",
build_file = "@pybind11_bazel//:pybind11-BUILD.bazel",
strip_prefix = "pybind11-",
urls = ["https://github.com/pybind/pybind11/archive/v.zip"],
)
```
Then, in your `BUILD` file:
```starlark
load("@pybind11_bazel//:build_defs.bzl", "pybind_extension")
```
## Bzlmod
In your `MODULE.bazel` file:
```starlark
bazel_dep(name = "pybind11_bazel", version = "")
```
Usage in your `BUILD` file is as described previously.