Volodymyr Gubarkov

Stand With Ukraine

makesure vs make

  1. Makesure is a task runner, make is a build tool.
  2. Makesure has built-in targets listing via -l flag.
  3. With makesure you don’t need to escape $ as $$ in recipes.
  4. With makesure you don’t need to use tab-indentation in recipes.
  5. 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.
  6. Makesure has a built-in timing capability (per-recipe and total).
  7. There are multiple flavors of make slightly inconsistent in syntax/behavior. Makesure, being zero-install, is by design more consistent.
  8. In Makesure all targets are phony (in the sense of make). But you have explicit @reached_if directive to make the target declarative.
  9. Make has own turing-complete programming language (see Lisp in make). Makesure is just goals + dependencies + handful of directives + bash/shell.
  10. 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