Build Tools: Make, Rake, Ant, Sbt - Hyperpolyglot
The 13 Things That Make a Good Build System | SignalFx
GNU Make
Make - GNU Project - Free Software Foundation
GNU make
θ·ζδΈθ΅·ε Makefile source
Makefile Tutorial by Example
Linux Fu: The Great Power Of Make | Hackaday
The joy of make at jsconfeu
Practical Makefiles, by example
Building Web Applications With Make β Smashing Magazine
Building JavaScript projects with Make β The If Works
Makefiles β Mrbook's Stuff
The Lost Art of the Makefile
Makefile instead of hoop jumping gist
Creating configuration scripts and Makefiles using autoconf & automake
Jobserver Implementation | GNU make
GNU make: Automatic Variables
GNU Autoconf, Automake and Libtool
# show rules
make -pn
# shows how make works
make --debug=v
mmake
Modernizing Make - TJ Holowaychuk - Medium
tj/mmake: Modern Make
non-recursive make
Recursive Make Considered Harmful
Recursive make Reloaded | Linux Magazine
Implementing non-recursive make
I evaluated two implementations: aostruszka/nonrec-make and dmoulding-boilermake Β· GitHub on these grounds:
- simple to modify and maintain
- fast to compile
- auto .h dependencies checking
allows for external dependencies (support libraries built out of the build - system) - separate storage for object code generated
boilermake
is quite restrictive in that each .mk only supports one target, so a module could contain multiple .mk
to build multiple libs and test app. To add a dependency, we need:
TGT_PREREQS += lib/libfoo.a
TGT_LDLIBS += -lfoo
nonrec-make
is easier in including multiple sub-makefiles and supports expanding rule for source files (akin to *.c). It also added support for external build system.
Examples:
Task
Task is a task runner / build tool that aims to be simpler and easier to use than, for example, GNU Make.
Home | Task
go-task/task: A task runner / simpler Make alternative written in Go
Pants
Build Tools with Benjy Weinberger - Software Engineering Daily
just
task runner rather than a build system
Introduction - Just Programmer's Manual
casey/just: π€ Just a command runner
Buck
Buck: A fast build tool by Facebook
7 Reasons to Use Buck Build β Hacker Noon
(Even) More Reasons to Use Buck Build β Hacker Noon
How to Create a Buck-based C/C++ Project β Hacker Noon
Generating a Single-Include C++ Header File Using Buck
Lessons Learned from Porting 300 C/C++ Projects to Buck Build
BuildInfer
BuildInfer β Next Generation C/C++ Build Acceleration
Why Not Make? β Hacker Noon
Meson
Invoke
Welcome to Invoke! β Invoke documentation write tasks in Python
Lake
Lake β a Lua-based Build Engine
stevedonovan/Lake: A Lua-based Build Tool
nobuild
used by cross-platform-apps-desktop#Olive.c
tsoding/nobuild: Header only library for writing build recipes in C.
Gradle
Node.js ecosystem
Bazel
gyp
gyp was the build system used by Chromium and Node.
But Chromium has since moved to GN.
gyp-UserDocumentation.md
Converting a C library to gyp β n8.io
Ninja
Ninja, a small build system with a focus on speed
Using GN build - Google Slides
The Performance of Open Source Software | Ninja
Building Like (a) Ninja [Pt1]
docs - gn - Git at Google GN is a meta-build system that generates build files for Ninja.
NUKE
Smart automation for DevOps teams and CI/CD pipelines | NUKE
nuke-build/nuke: π The AKEless Build System for C#/.NET
10 Ingredients for an AKEless Build System. Matthias Koch .NET Fest 2019 - YouTube
Pants
Pants Build
Pants is a build system written by Twitter to build Python and Java codes.
Getting Started with the Pants Build System - YouTube
Mule
algorand/mule: General automation framework
Automating with the Mule framework | by Brice Rising | Algorand | Medium
tup
Buildout
Buildout, an automation tool written in and extended with Python β Buildout documentation
Waf
Waf: the meta build system
The Waf Book
waf-project/waf: The Waf build system
Make-It-Quick (MIQ)
c3d/make-it-quick: A simple auto-configuring make-only build system