3 ms·
(GNU) Make's advantages include ease of use, a modicum of portability, and support for a variety of different software development command line stacks. Unfortu
by mc4ndr3 5y ago
(GNU) Make's advantages include ease of use, a modicum of portability, and support for a variety of different software development command line stacks.
Unfortunately, the shell commands that are typically setup in a Makefile, are rather unportable. They waste a touch of time and space. They can break in surprising ways.
For this reason, I try to write my build tasks in terms of the same programming language as the application language. For example, Grunt for JavaScript projects, Shake for Haskell projects, Gradle for Groovy projects, Rez for C/C++ projects, Dale for D projects, TinyRick for Rust projects, and Mage for Go projects. Leiningen for Clojure projects, SBT for Scala projects. Vast for shell projects.
Make, like Python, suffers from the appearance of simplicity, at the cost of long term maintainability. Ideally both the build system and the main application are compiled. That doesn't have to be a cumbersome process, but rather a guide to identify potential bugs sooner during development.
Make is my first choice for random projects, but only when better build systems are unavailable.