Overall Satisfaction with GNU Make
Our team uses GNU Make to build any of our software projects once they have reached a reasonable level of complexity. We use it to build Go, C, and Fortran-based projects to provide simple "make build" or "make test" steps to compile code and run tests. It's an old-fashioned tool, and I wish there were better tools available, but none of the contenders seem to have the simplicity and extensibility that Make does. Other devices seem to be language-specific and specialized for specific ecosystems (e.g., maven or Gradle are great for Java, but not for C projects). Batch files are simpler but don't perform as well and don't provide as much out-of-the-box flexibility (e.g., ability to compile only specific files rather than a full build).
- Dependency tracking (only re-build files if needed)
- Simple to integrate with existing command-line tools
- No dependency management tools (but there are no cross-platform tools of this type anyway)
- Tedious to do cross-compilation (Debug & Release builds, 32- and 64-bit builds, x86/ARM builds)
- Easier to onboard new developers
- Straightforward integration with CI/CD systems
- Apache Maven and Gradle
I'm a full-stack developer that has used various build tools, including Maven, Gradle, and NPM/yarn. For our C projects, I also investigated CMake and Ninja, but they seemed more difficult to learn and more tedious to work with. GNU Make is a single binary that can be easily downloaded, even for Windows under MingW32, is straightforward to learn, and works pretty well despite its age.
Do you think GNU Make delivers good value for the price?
Yes
Are you happy with GNU Make's feature set?
Yes
Did GNU Make live up to sales and marketing promises?
Yes
Did implementation of GNU Make go as expected?
Yes
Would you buy GNU Make again?
Yes