Makefile полезен, потому что (если он правильно определен) позволяет перекомпилировать только то, что необходимо, когда вы вносите изменения.
В большом проекте перестройка программы может занять некоторое серьезное время, потому что будет много файлов длябыть скомпилированными и связанными, и будет документация, тесты, примеры и т. д. Когда вы работаете над проектом и вносите небольшие изменения, это будет раздражать необходимость каждый раз перестраивать все.
Файл makefile хранитперечислите «входные» файлы, «выходные» файлы и «команды», необходимые для получения выходных данных с учетом ввода.Когда вы вносите изменения в проект, команда make
проверит дату входных файлов с датой соответствующих выходных файлов, и если входные файлы были изменены, она заново создаст соответствующий вывод, выполнив команду.
Это, конечно, очень грубое описание, поскольку make гораздо более сложна, чем эта (топологическая сортировка, макрокоманды, параллельное выполнение) ... но она должна дать вам представление.
Перестройка всегона каждое изменение уходит слишком много времени, и восстановление вручную только того, что необходимо, подвержено ошибкам (если вы забудете отбросить кусок, вы можете подумать, что внесенное вами изменение в порядке, хотя на самом деле оно нарушает то, что вы просто сделалине перекомпилировать).
Обратите внимание, что сегодня существует множество систем сборки, гораздо более сложных, чем make-файлы (которые, например, генерируют make-файлы автоматически, анализируя вашу платформу и исходный код).
Это те инструментыэто серебряная пуля или решениепоиск проблемы сомнителен (я склонен к этому, потому что я ненавижу инструменты сборки, а они ненавидят меня ... каким-то образом их логика автоопределения никогда не работает правильно на моих машинах).