makesure vs make
- Makesure is a task runner, make is a build tool.
- Makesure has built-in targets listing via
-l
flag.
- With makesure you don’t need to escape
$
as $$
in recipes.
- With makesure you don’t need to use tab-indentation in recipes.
- Makesure runs the entire recipe in a single shell invocation, make runs each line of the recipe in a separate shell. You need to use
\
-splitting to run recipe as a whole, or use GNU-make-specific .ONESHELL special target.
- Makesure has a built-in timing capability (per-recipe and total).
- There are multiple flavors of make slightly inconsistent in syntax/behavior. Makesure, being zero-install, is by design more consistent.
- In Makesure all targets are phony (in the sense of make). But you have explicit @reached_if directive to make the target declarative.
- Make has own turing-complete programming language (see Lisp in make). Makesure is just goals + dependencies + handful of directives + bash/shell.
- Makesure, being a task runner, doesn’t support parallel recipes execution, make supports via
-j
flag.
If you noticed a typo or have other feedback, please email me at xonixx@gmail.com