
Raymond 2003īefore Make's introduction, the Unix build system most commonly consisted of operating system dependent "make" and "install" shell scripts accompanying their program's source code. Stuart Feldman, The Art of Unix Programming, Eric S. Makefiles were text files, not magically encoded binaries, because that was the Unix ethos: printable, debuggable, understandable stuff. Use of tools that were still wet was part of the culture.

It began with an elaborate idea of a dependency analyzer, boiled down to something much simpler, and turned into Make that weekend. As I had spent a part of the previous evening coping with the same disaster on a project I was working on, the idea of a tool to solve it came up.

Make originated with a visit from Steve Johnson (author of yacc, etc.), storming into my office, cursing the Fates that had caused him to waste a morning debugging a correct program (bug had been fixed, file hadn't been compiled, cc *.o was therefore unaffected). įeldman was inspired to write Make by the experience of a coworker in futilely debugging a program of his where the executable was accidentally not being updated with changes: Feldman received the 2003 ACM Software System Award for authoring the tool. It was created by Stuart Feldman in April 1976 at Bell Labs. Make is one of the most widespread dependency-tracking build utilities, primarily due to its early inclusion in Unix, starting with PWB/UNIX 1.0, which featured a variety of tools for software development tasks. Make can be used to manage any project where some files need to be updated automatically from others whenever the others change in addition to building programs. Though integrated development environments and language-specific compiler features can also be used to manage a build process, Make remains widely used, especially in Unix and Unix-like operating systems.
Makefile vs runjs how to#
In software development, Make is a build automation tool that builds executable programs and libraries from source code by reading files called makefiles which specify how to derive the target program.
