Reviews (1-2 of 2)
January 10, 2020
Score 8 out of 10
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)
GNU Make is a great tool for simple builds where language-specific options are not available, or to provide shortcuts for common commands (e.g., "make build" as shorthand for "go build ..." with a bunch of flags). However, it is complementary to other build systems. It does not replace them, which is perhaps one of its greatest strengths as well (works with existing ecosystem instead of trying to do everything). GMU Make it simple to get started with, and the philosophy of understanding how sources map to outputs, as well as the dependency graph, are beneficial.
Read Jonathan Yu's full review
I don't think anyone is actively developing GNU Make anymore, but it is available everywhere and does not seem to have any significant bugs or unresolved defects. Linux packages are available, and it is a cross-platform tool, even working pretty well on Windows under MingW32. A lot of people have used Make and know how it works, so it should be easy to hire people to modify or extend your Makefiles, even if nobody remembers how it works.
GNU Make is being used as a build script in our product software development, specifically for embedded software development.
Makefiles are machine-readable documentation that make your workflow reproducible. If the build process is a very continuous flow of operations within scope, it will do it well and also act as a documentation of all the dependence. For some long-term projects, Make has been used extensively and being maintained to do the job.
Read this authenticated review
In general, it is fair to say the support is sufficient although we do not deal with support directly. There are a lot of forum people chiming in with suggestions or recommendations of particular usage or issues we run into. Since it is open software, patch and fixes will be available from time to time. A lot of information is available in the web now for knowing GNU Make from learning, example, teaching, etc.