██████╗ ██╗ █████╗ ██████╗ ███████╗
██╔══██╗██║ ██╔══██╗██╔══██╗██╔════╝
██████╔╝██║ ███████║██║ ██║█████╗
██╔══██╗██║ ██╔══██║██║ ██║██╔══╝
██████╔╝███████╗██║ ██║██████╔╝███████╗
╚═════╝ ╚══════╝╚═╝ ╚═╝╚═════╝ ╚══════╝
English | 简体中文
An easy-to-use, fast and modern build system for trunk based development in large-scale monorepo codebase.
First, let's see a cool demo:
The code on the master branch is development version and should be considered as alpha version. Please prefer using the version on the tags in your formal environment. We will release the verified version on the large-scale internal code base to the tag from time to time.
Version 2.0 is in release candidate! It includes the following notable changes:
Please follow the Upgrade Notes to upgrade.
Blade is designed to be a modern build system. It is powerful and easy to use. It supports building multiple languages, such as c/c++, java, python, scala, protobuf, etc. It analyzes the target dependency automatically and integrates compiling, linking, testing(includes incremental testing and parallel testing) and static code inspectiontogether. It aims to improve the clarity and simplicity of the building rules for a project.
With Blade, you can compile, link and test multiple targets by just inputting one simple command line. For example:
Build and test all targets in common directory recursively.
blade test common...
Build and test targets as 32 bit
blade test -m32 common...
Build and test targets as debug mode
blade test -pdebug common...
And you can combine the flags together:
blade test -m32 -pdebug common...
Blade is inspired by Google's public information about their build system. Here is a reference article from Google's official blog: build in cloud: how build system works.
Later in 2015, they released it with partial rewritten as bazel
open-source build system.
Blade generates Ninja script internally, so of course it depends on ninja.
Python is a powerful and easy-to-used language, we like python.
Some libraries open sourced by Google, such as protobuf,
gtest,
gperftools are handy and powerful, we have integrated these libraries.