Утверждение неверно. Фактически, вся причина make
(и тому подобное) существует потому, что она ложна - они минимизируют время/усилия для восстановления приложения путем отслеживания изменений исходных файлов и повторного создания только объектных файлов, зависящих от источника файлы, которые были изменены. Обновляемые файлы объектов просто остаются в силе.
После того, как все объектные файлы обновлены, они связаны между собой для создания окончательного исполняемого файла (и, опять же, это обычно делается только в том случае, если хотя бы один объектный файл является более новым, чем текущий исполняемый файл).
Конечно, можно использовать make
для заданий, не связанных с компиляцией и связыванием, но это почти наверняка используется, к которому они чаще всего относятся, и (по крайней мере, большинство) причин, по которым они были изобретены (единственное очевидное изменение заключается в том, что они первоначально использовались в основном для исходного кода C, а не для C++, но в этом отношении два почти неразличимы).
Единственное очевидное различие между ними заключается в том, что, когда вы используете шаблоны, вы обычно вставляете много кода в заголовки. В этом случае изменение заголовка заставляет повторно компилировать весь код, который включает этот заголовок, что часто бывает много. С C-кодом и/или не-шаблоном C++-кодом вы помещаете большую часть кода в исходный файл, поэтому вам нужно только перекомпилировать другие файлы, если вы измените интерфейс на код (который обычно меняет заголовок), но только этот файл необходимо перекомпилировать, если вы ограничите свои изменения в реализации без изменения интерфейса.
См. Этот [аналогичный вопрос] (http://stackoverflow.com/questions/9188101/recompile-after-base-class-change/9188135), относящийся к базовым классам. –