mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
26 lines
1.9 KiB
Markdown
26 lines
1.9 KiB
Markdown
|
|
# WPILib Bazel Support
|
||
|
|
|
||
|
|
WPILib is normally built with Gradle, but [Bazel](https://www.bazel.build/) can also be used to increase development speed due to the superior caching ability and the ability to use remote caching and remote execution (on select platforms)
|
||
|
|
|
||
|
|
|
||
|
|
## Prerequisites
|
||
|
|
- Install [Bazelisk](https://github.com/bazelbuild/bazelisk/releases) and add it to your path. Bazelisk is a wrapper that will download the correct version of bazel specified in the repository. Note: You can alias/rename the binary to `bazel` if you want to keep the familiar `bazel build` vs `bazelisk build` syntax.
|
||
|
|
|
||
|
|
## Building
|
||
|
|
To build the entire repository, simply run `bazel build //...`. To run all of the unit tests, run `bazel test //...`
|
||
|
|
Other examples:
|
||
|
|
- `bazel build //wpimath/...` - Builds every target in the wpimath folder
|
||
|
|
- `bazel test //wpiutil:wpiutil-cpp-test` - Runs only the cpp test target in the wpiutil folder
|
||
|
|
- `bazel coverage //wpiutil/...` - (*Nix only) - Runs a code coverage report for both C++ and Java on all the targets under wpiutil
|
||
|
|
|
||
|
|
## User settings
|
||
|
|
When invoking bazel, it will check if `user.bazelrc` exists for additional, user specified flags. You can use these settings to do things like always ignore buildin a specific folder, or limiting the CPU/RAM usage during a build.
|
||
|
|
Examples:
|
||
|
|
- `build --build_tag_filters=-wpi-example` - Do not build any targets tagged with `wpi-example` (Currently all of the targets in wpilibcExamples and wpilibjExamples contain this tag)
|
||
|
|
- `build -c opt` - Always build optimized targets. The default compiler flags were chosen to build as fast as possible, and thus don't contain many optimizations
|
||
|
|
- `build -k` - `-k` is analogous to the MAKE flag `--keep-going`, so the build will not stop on the first error.
|
||
|
|
- ```
|
||
|
|
build --local_ram_resources=HOST_RAM*.5 # Don't use more than half my RAM when building
|
||
|
|
build --local_cpu_resources=HOST_CPUS-1 # Leave one core alone
|
||
|
|
```
|