The Grand Quiz
๐ The Grand Quiz
Eight lessons, one brain. Time to prove you can think in Make.
This quiz covers every lesson. 16 questions. No time limit. No partial credit. Your score appears at the end.
Section 1: Foundations (Lessons 1โ2)
1. What is the single core idea that makes Make powerful?
2. Your recipe line is indented with four spaces and Make says "missing separator." Why?
Section 2: Variables & the Graph (Lessons 3โ4)
3. Which assignment operator expands a variable immediately at definition time?
4. In %.o: %.c building main.o, what does {{LESSON_CONTENT}}lt; expand to?
5. Make decides to rebuild a target when...
Section 3: Patterns & Real Projects (Lessons 5โ6)
6. Which snippet auto-discovers all C sources?
7. How do you make header edits trigger recompiles of every file that includes them?
8. What does CC ?= cc mean?
Section 4: Advanced & Judgment (Lessons 7โ8)
9. What is an order-only prerequisite (the | bin in app: $(OBJS) | bin) for?
10. With .ONESHELL enabled, why should you also set .SHELLFLAGS = -e -c?
11. You need to run up to 8 build jobs at once. What command?
12. A project has no real file dependencies โ just commands like lint, docker, and deploy. What's the most fitting tool?
13. When is the "recursive make" pattern (sub-makes per directory) most likely to hurt you?
14. What does the @ prefix on a recipe line do?
15. A teammate changes a header, runs make, and nothing rebuilds โ stale behavior appears later. Most likely cause?
16. Best summary of when to use Make?
Where to Go Next
You've got the model. Now practice it in the wild:
- Rewrite something you already build by hand. Take a manual compile/run routine and turn it into a Makefile โ any language works.
- Add a
helptarget to a repo you maintain (Lesson 7 pattern) and watch teammates start usingmake. - Introduce automatic dependency generation (
-MMD -MP+-include) to a C/C++ project that hand-lists headers. - Read a famous Makefile. The Linux kernel's, a well-known OSS project's, or the GNU Make source's own Makefile โ each is a masterclass.
- Try the alternatives once each (Ninja, CMake, Just, Task) so your "when not to use Make" instinct is grounded in experience, not hearsay.