Skip to content

Blade is a powerful build system from Tencent, support many mainstream programming languages, such as C/C++, java, scala, python, protobuf...

License

Notifications You must be signed in to change notification settings

wfnuser/blade-build

 
 

Repository files navigation

Blade Build System

license NewBSD Python Code Style Platform

██████╗ ██╗      █████╗ ██████╗ ███████╗
██╔══██╗██║     ██╔══██╗██╔══██╗██╔════╝
██████╔╝██║     ███████║██║  ██║█████╗
██╔══██╗██║     ██╔══██║██║  ██║██╔══╝
██████╔╝███████╗██║  ██║██████╔╝███████╗
╚═════╝ ╚══════╝╚═╝  ╚═╝╚═════╝ ╚══════╝

An easy-to-use, fast and modern build system for trunk based development in large scale monorepo codebase.

Click here to read 中文文档.

Build Status

Build Status codebeat badge Coverage

Demo

First, let's see a cool demo:

asciicast

News

  • Version 2.0 is released! It includes the following notable changes:

    • minimal python version 2.7, support python 3
    • Support Java, scala building
    • Full support to Python
    • Support custom extensions
    • Only use ninja as backend build system, increases speed dramatically.

Please follow the Upgrade Notes to upgrade.

Brief

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...

Features

  • Auto dependency analysis, includes header files and libraries.
  • Test integration: built-in support of gtest. Support incremental testing and parallel testing.
  • Simple syntax, easy to use.
  • Simple command line interface similar to svn.
  • Memory leak checking(with gperftools).
  • Bash command line completion.
  • Colorful diagnostic message displaying.
  • Vim integration, includes syntax hi-light, quickfix.

Documentation

Sorry for Chinese only, English documentation is under construction.

Credits

  • Blade is inspired by Google's public information about their building system. Here is a reference article from Google's official blog.

build in cloud: how build system works

  • Blade generates Ninja script internally, so of cause 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.

About

Blade is a powerful build system from Tencent, support many mainstream programming languages, such as C/C++, java, scala, python, protobuf...

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 91.3%
  • Vim Script 3.2%
  • Shell 2.9%
  • Thrift 1.0%
  • Cuda 0.5%
  • C++ 0.5%
  • Other 0.6%