Утверждение ложно. На самом деле, вся причина существования make
(и подобных) заключается в том, что она ложна — они минимизируют время/усилия для перестроения приложения, отслеживая, какие исходные файлы были изменены, и воссоздавая только объектные файлы, которые зависят от исходного кода. файлы, которые были изменены. Обновленные объектные файлы просто не трогают.
Как только все объектные файлы обновлены, они соединяются вместе для создания окончательного исполняемого файла (и, опять же, это обычно делается только в том случае, если хотя бы один объектный файл новее текущего исполняемого файла).
Конечно, также возможно использовать make
для задач, не связанных с компиляцией и линковкой, но почти наверняка это то, для чего они используются чаще всего, и (по крайней мере, в большинстве случаев) причина, по которой они были изобретены (единственное очевидное изменение поскольку они изначально использовались в основном для исходного кода C, а не C++, но в этом отношении они почти неотличимы).
Единственная очевидная разница между ними состоит в том, что когда/если вы используете шаблоны, вы, как правило, в конечном итоге помещаете много кода в заголовки. В этом случае изменение заголовка приводит к повторной компиляции всего кода, включающего этот заголовок, что часто бывает очень много. При использовании кода C и/или нешаблонного кода C++ вы помещаете большую часть кода в исходный файл, поэтому вам нужно перекомпилировать другие файлы только в том случае, если вы измените интерфейс на код (который обычно изменяет заголовок), но перекомпилировать нужно только этот файл, если вы ограничиваете свои изменения реализацией без изменения интерфейса.
person
Jerry Coffin
schedule
09.04.2012