HN Hall of Fame Weekly email

Learn Makefiles

makefiletutorial.com Books & learning Tutorials & guides Software engineering Class of 2025-06 Hall of Fame
Screenshot of makefiletutorial.com captured 2026-07-20
Page preview · captured 2026-07-20

Resurfaced independently across 5 calendar years, with breakout response in 3 of them.

submissions
8
submitters
7
observed span
2014–2025
peak thread · 125 comments
266 pts
latest 20+ return · 2025-06-20
266 pts

Submission timeline

2007–2026

One slot for every year since HN launched. Height is that year's peak points; orange marks a 100+ point or 50+ comment breakout. Select a bar to open its strongest thread.

First comments on top threads

HN comment order

A couple make flags that are useful and probably not very well known: Output synchronization which makes `make` print stdout/stderr only once a target finishes. Otherwise it's typically interleaved and hard to follow: make --output-sync=recurse -j10 On busy / multi-user systems, the `-j` flag for jobs may not be best. Instead you can also limit parallelism based on load average: make -j10 --load-average=10 Randomizing the order in which targets are scheduled. This is useful for your CI to harden your…

Rant incoming; I really don’t like Make for the common use-cases it is being used for in the modern day, such as the Golang ecosystem or in many cases: creating docker files. Make, at its core, is a tool that is meant to help you structure your dependencies for incrementally building things, but people use it as a glorified task runner simply due to the fact that it’s such a common build tool that it is nearly always installed if…

dijit·170-point thread·

A far better way to learn about GNU make would be to read the actual manual. https://www.gnu.org/software/make/manual/ This doesn't seem like a well thought out introduction. There's quite a lot of randomness. For example, the first makefile says: This makefile will always run. The default target is some_binary, because it is first. some_binary: echo "nothing" Actually, it's not true that that will always echo nothing because some_binary isn't declared as phony and so if some_binary exists on the CWD echo…

Make is part of why I don't like C/C++. Other languages have proper package management. C doesn't encourage reuse like JS and Python and Nim and Rust and everything else does. It takes sometimes significant work to add a dependency and make it compile. The dependencies have their own dependencies. And their own build system. Which might not be the same one you're using.

The first top-level comment from each of the four biggest threads, in HN’s own order. Excerpts are shortened; open a comment for full context.

Breakout years
3

100+ points or 50+ comments

Total points
724

reference only — not used in Hall rules or ranking

Total comments
320

reference only — not used in Hall rules or ranking

Every submission

DateTitle as submittedByPointsComments
2014-12-22Makefile Tutorial by Exampleluu40
2015-07-31Makefile Tutorial by ExampleFirst breakoutluu14336
2022-02-21Learn Makefiles with the Tastiest Examplesluismedel311
2022-06-29Makefile Cookbook – Makefile Tutorial by Exampleeshack9450
2023-05-14Learn Makefiles with the Tastiest Examplesingve17095
2023-07-08Learn Makefiles with the Tastiest Examplesagomez314126
2023-09-22Makefile Tutorialhasheddan9357
2025-06-20Learn MakefilesHall induction · Best thread · Latest 20+ point returndsego266125