GNU Build System
- 所谓GNU构建系统(GNU Build System)主要是指通过autoconf、automake和libtool这三个工具构建出来的软件结构体系,又名Autotools。通常和GNU make、gettext以及GCC一起配套使用。这个软件结构体系也是所有GNU项目的打包方式。
- 此打包方式的优点在于项目的可移植性,当程序本身不包含与硬件架构有关的代码时,可以直接将源码包复制到另一台计算机上,通过简单的./configure、make和make install三步骤完成程序的配置,编译和安装。
meson
- Meson 是用于自动化构建的自由软件,使用Python语言编写,主要目标是为了让开发者节约用于配置构建系统的时间。
- 多平台支持,包括 GNU/Linux、Windows、MacOS、GCC、Clang、Visual Studio等。
- 多语言支持,包括 C、C++、D、Fortran、Java、Rust等。
- 为多种操作系统以及裸机提供交叉编译。
- 针对极其快速和完整的增量构建进行了优化,同时又不牺牲正确性。
- 类似于 CMake ,Meson并不直接构建软件,而是使用合适的后端,在 GNU/Linux 使用 ninja,在Windows 上使用 Visual Studio,在 MacOS 上使用 Xcode。
cmake
- CMake是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不依赖于某特定编译器,并可支持多层目录、多个应用程序与多个库。 它用配置文件控制建构过程(build process)的方式和Unix的make相似,只是CMake的配置文件取名为CMakeLists.txt。
Ninja
- Ninja 是 Google 的一名程序员推出的注重速度的构建工具,一般在 Unix/Linux 上的程序通过 make/makefile 来构建编译,而 Ninja 通过将编译任务并行组织,大大提高了构建速度。
- GYP、CMake和Meson支持生成Ninja构建文件。
bazel
- Google开源的构建工具。它通过将构建过程进行抽象建模,实现了一个接近理解的构建系统。
- bazel支持增量式编译,支持缓存,支持分布式扩展。
- 清晰的依赖关系。
gradle
- Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。Gradle 构建脚本使用的是 Groovy 或 Kotlin 的特定领域语言来编写的,而不是传统的XML。
- 当前官方支持的语言为Java、Groovy、Scala、C++、Swift、JavaScript等以及Spring框架。
maven
- 是一个软件(特别是Java软件)项目管理及自动构建工具,Maven也可被用于构建和管理各种项目,例如C#,Ruby,Scala和其他语言编写的项目。
sCons
- 一种软件开发工具程序,功能类似于UNIX上的make、autoconf与automake工具。它是一个开放源代码计划,采用MIT许可,原作者是史蒂芬·奈特(Steven Knight),使用Python语言开发。第一个正式版本在2010年3月23日发布。
GYP
-
GYP是Generate Your Projects的缩写,GYP的目的是为了支持更大的项目编译在不同的平台,比如Mac,Windows,Linux,它可以生成Xcode工程,Visual Studio工程,Ninja编译文件和Makefiles。
-
chromium的编译过程中用到了GYP,GN和Ninja这三个构建工具,GYP是一个在不同平台构建项目的工具,GN是GYP的升级版,Ninja是一个小型追求速度的构建系统。