Giter VIP home page Giter VIP logo

away / blade-build Goto Github PK

View Code? Open in Web Editor NEW

This project forked from chen3feng/blade-build

0.0 0.0 0.0 7.81 MB

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

License: Other

Shell 2.48% Python 91.73% C++ 0.48% C 0.08% Cuda 0.48% Thrift 0.92% Assembly 0.05% Java 0.10% LLVM 0.06% Yacc 0.06% SWIG 0.05% Starlark 0.60% Vim Script 2.91%

blade-build's Introduction

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

Releases

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:

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

Stargazers over time

Stargazers over time

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 git/svn.
  • Memory leak checking in tests(with gperftools).
  • Bash command line completion.
  • Colorful diagnostic message displaying.
  • Vim integration, includes syntax highlighting, quick fix.

Documentation

Credits

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

blade-build's People

Contributors

anonyv avatar atlantidewang avatar brianli avatar buaaliyi avatar chen3feng avatar chenminhua avatar fujiz avatar hiberabyss avatar huahang avatar jack1582 avatar liam0205 avatar nathansni avatar noanswer avatar noneback avatar simonkuang avatar sourceloo avatar vic020 avatar wfnuser avatar whuwxl avatar windleewt avatar wongtai avatar x2c3z4 avatar xiaopeifeng avatar xiaoqiangkx avatar yeshunping avatar yuhuichina avatar zhangyafeikimi avatar zhuangli1987 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.