Make: a Tool for Building Software

Make is old. It was first released in 1977. It's ubiquitous. Make is a standard development tool on Unix, Linux and POSIX systems. Make is not easy to use. It has many well-known warts and pitfalls. The things a beginner wants to do with Make aren't the things that Make wants you to do.

Nevertheless, Make has survived for forty years because it is often good enough. If you develop software, particularly if you work in C or C++, you will encounter a makefile sooner or later.

When you truly realize that Make is a declarative language for specifying a directed acyclic graph, where the vertices are files and the edges are build scripts, then you can use Make effectively. Even after many years, I still sometimes forget this in both obvious and subtle ways while using Make.