Зависимость all
от $(SOURCES)
не является необходимой или даже полезной. Информация о зависимостях должна быть такой, чтобы исполняемый файл зависел от объектных файлов, а объектные файлы зависели от исходных файлов.
Обозначения:
.cpp.o:
был способом, которым оригинальная (7-е издание UNIX ™) версия make
обрабатывала правила компиляции. GNU Make (и Sun Make) использовали запись %
, чтобы разрешить:
%.o: %.cpp
По сути, это было дизайнерское решение, которое имело смысл в то время и, может быть, менее целесообразно в ретроспективе. Это была не самая вопиющая проблема (это были бы вкладки в начале командной строки).