🏃 Getting Started · ⌨️ CLI · 🎯 Goals · 🙏 Acknowledgements
uv tool install --upgrade bob-build --with bobstd
# Optionally set up shell completions for Bob (currently supported for fish).
bob completionsSee the tour and specifically its root Bobfile for a demo of building with Bob!
# Build the project in the current directory (you should have a Bobfile).
bob build
# Clean the outputs of Bob.
bob clean
# Build with a specific config.
bob build -c DEBUG=n
# Build with a specific config in a separate build directory, so both consecutive builds are blazingly fast.
bob build -c DEBUG=y --builddir build-debug
# More options, including options passed to Ninja (after --).
bob build --clean -j 4 -- -v
# Create a compile_commands.json with the given configs.
bob compdb -c DEBUG=n
# Create a compile_commands.json only including `build/.subbob-2-src/basic` and its dependencies.
bob compdb build/.subbob-2-src/basicTry these out in the tour!
Sorted by priority:
- Writing Bobfiles, writing plugins and rules, and composing Bobfiles should all be easy and feel Pythonic.
- Type safety should allow for a smooth editing experience and easy-to-debug errors.
- Plugins should be close to the actual commands rather than lock you in to a specific paradigm.
- Speed should be fast.
- Bake
- Kbuild
- Ninja's configure.py
- Thanks to everyone who helped design Bob, in particular Noam Raz.
