List of build automation software explained
Below lists notable build automation tools.
Sequencing
Make
Tools similar to the original Unix make one of the earliest build automation tools:
- GNU make, extends original Unix version
- mk, developed originally for Version 10 Unix and Plan 9, and ported to Unix as part of plan9port
- PVCS-make, based on Unix Make with additional features[1]
Other
- Apache Ant, popular for Java platform development and uses an XML file format
- Apache Maven, a Java platform tool for dependency management and automated software build
- ASDF LISP build system for building LISP projects
- A-A-P, a Python-based build tool
- Bazel, a portion of Blaze (Google's own build tool) written in Java, using Starlark (BUILD file syntax) to build projects in Java, C, C++, Go, Python, Objective-C, and others
- BitBake, a Python-based tool with the special focus of distributions and packages for embedded Linux cross-compilation
- Buck, a build system developed and used by Facebook, written in Rust, using Starlark (BUILD file syntax) as Bazel
- Buildout, a Python-based build system for creating, assembling and deploying applications from multiple parts
- Cabal, a common architecture for building applications and libraries in the language Haskell
- Dub, the official package and build manager of the D Language
- Flowtracer, a build management tool
- Gradle, an open-source build and automation system with an Apache Groovy-based domain specific language (DSL), combining features of Apache Ant and Apache Maven with more features like a reliable incremental build
- Grunt, a build tool for front-end web development
- Gulp, a build tool for front-end web development
- IncrediBuild, a suite of grid computing software for compiling and building software
- Leiningen, a tool providing commonly performed tasks in Clojure projects, including build automation
- Mix, the Elixir build tool
- MSBuild, the Microsoft build engine
- NAnt, a tool similar to Ant for the .NET Framework
- Ninja, a small build system focused on speed by using build scripts generated by higher-level build systems
- Perforce Jam, a build tool by Perforce, inspired by Make
- Qt Build System
- Rake, a Ruby-based build tool
- sbt, a build tool built on a Scala-based DSL
- SCons, Python-based, with integrated functionality similar to autoconf/automake
- Stack, a tool to build Haskell projects, manage their dependencies (compilers and libraries), and to test and benchmark.
- Visual Build, a graphical user interface software for software builds
- Waf, a Python-based tool for configuring, compiling and installing applications. It is a replacement for other tools such as Autotools, Scons, CMake or Ant
Build script generation
These generator tools do not build directly, but rather generate files to be used by a native build tool (as the ones listed in the previous two sections).
- CMake generates files for various build tools, such as make, ninja, Apple's Xcode, and Microsoft Visual Studio.[2] CMake is also directly used by some IDE as Qt Creator,[3] KDevelop and GNOME Builder.[4]
- GNU Build System (aka autotools), a collection of tools for portable builds. These in particular include Autoconf and Automake, cross-unix-platform tools that together generate appropriate localized makefiles.
- GYP (Generate Your Projects) - Created for Chromium; it is another tool that generates files for the native build environment. It has been superseded by GN which generates files for ninja and other build systems.
- imake
- Meson, a build system optimized for performance and usability is based on ninja on Linux, Visual Studio on Windows and Xcode on macOS. Meson is also directly used by GNOME Builder.[4]
- OpenMake Software Meister
- Premake, a Lua-based tool for making makefiles, Visual Studio files, Xcode projects, and more
- qmake
Continuous integration
See main article: article and Comparison of continuous integration software.
- AnthillPro, build automation with pipeline support for deployment automation and testing. Cross-platform, cross-language
- Apache Continuum - discontinued
- Bamboo, continuous-integration software
- Bitbucket Pipelines and Deployments, continuous integration for Bitbucket hosted repositories[5]
- Buildbot, a Python-based software development continuous-integration tool which automates the compile/test cycle
- CruiseControl, for Java and .NET
- Go continuous delivery, open source, cross-platform
- GitLab (GitLab Runner), continuous integration and git server
- GitHub (GitHub Actions), free continuous integration service for open-source projects and git server
- Hudson, an extensible continuous-integration engine
- Jenkins, an extensible continuous-integration engine, forked from Hudson
- Spinnaker, open source multi-cloud continuous delivery service from Netflix and Google
- TeamCity
- Travis CI, a hosted continuous-integration service
Configuration management
Package managers
A package manager is a meta-build tool capable of building many different projects using a subset of existing build tools, generally using a list or repository of build scripts called "packages".
- Pkgsrc, Portage, MacPorts and other package managers derived from the BSD Ports Collection.
- Nix, functional package manager for Linux and macOS focusing on reproducible builds, used for the NixOS Linux distribution.
- Guix, functional package manager based on Nix, used for the GuixSD Linux distribution.
- Collective Knowledge, cross-platform package manager to rebuild software environment for research workflows
- Homebrew, package manager for macOS
Others
- checkinstall, checkinstall is a program that monitors an installation procedure and creates a standard package for your distribution.
- Open Build Service, a hosted service to help build packages for various Linux distributions
Licensing overview
Tool name | Description | License |
---|
A-A-P | recipe | |
---|
Ant | XML | |
---|
AnthillPro | Wraps Make, Ant, Maven, MsBuild, Nant, etc. for controlled build, deploy, test processes. | |
---|
Bamboo | continuous integration | |
---|
Bazel | BUILD/Starlark, a Python-like DSL | |
---|
Boot | Clojure | |
---|
Capistrano | XML | |
---|
CMake | uses CMakeLists.txt file | |
---|
Collective Knowledge Framework | Python scripts with JSON API and JSON meta-description | |
---|
Continuum | ? | |
---|
CruiseControl | XML | |
---|
Dub | JSON, SDL | |
---|
Gradle | Groovy-based DSL; Kotlin-based DSL | |
---|
Jenkins | continuous integration | |
---|
Homebrew | Ruby | |
---|
Leiningen | Clojure | |
---|
make | uses Makefile | |
---|
Maven | Project Object Model | |
---|
Meson build system | custom DSL | |
---|
MPW Make | ? | |
---|
MSBuild | XML | |
---|
NAnt | XML | |
---|
nmake | uses Makefile | |
---|
Open Build Service | uses various package and image description formats (spec, dsc, ARCH, kiwi) | |
---|
Perforce Jam | uses Jamfile | |
---|
Rake | Ruby | |
---|
sbt (Simple Build Tool) | Scala-based DSL | |
---|
SCons | Python | |
---|
Team Foundation Server | MSBuild, Windows Presentation Foundation, JSON - REST interfaces, Programmatic (Can generate definitions through code) | |
---|
Visual Build | XML | |
---|
Waf | Python | | |
---|
Notes and References
- http://lists.gnu.org/archive/html/bug-make/2003-02/msg00019.html mailing list discussion about porting PVCS-make scripts to GNU-make
- Web site: cmake-generators(7) — CMake 3.11.1 Documentation. cmake.org.
- Web site: Setting Up CMake - Qt Creator Manual. doc.qt.io.
- Web site: GNOME Builder Development Environment Picking Up Many Features For GNOME 3.28 - Phoronix. www.phoronix.com.
- https://confluence.atlassian.com/bitbucket/build-test-and-deploy-with-pipelines-792496469.html Cross-platform