A particularly tricky task with GNU make is automatically adding target dependencies on header files and handling updates to them (gcc's -M and -MMD switches). It would be great if the article explained those best practices, too.
$(BIN)/%.cpp.o: %.cpp
$(CXX) -c $(CXXFLAGS) "$
-include $(shell test -d $(BIN) && find $(BIN) -name "*.deps")