Многие проекты содержат много исходных файлов.
В принципе, вы можете вручную скомпилировать любой из этих файлов самостоятельно - вы используете компилятор для компиляции этого исходного файла во (временный) объектный файл, содержащий машинный код.
На практике слишком утомительно вручную компилировать каждый исходный файл по одному,
и еще более утомительно вручную отслеживать, какие исходные файлы необходимо перекомпилировать.
Таким образом, мы собираем весь проект сразу, запуская автоматизированную программу сборки - обычно называемую «make».
Эта программа просматривает список исходных файлов, часто хранящихся в еще одном «исходном» файле с именем «makefile», и вызывает компилятор для каждого - многие версии «make» достаточно умны, чтобы перекомпилировать только измененные файлы. и так нужно перекомпилировать.
Хотя компиляция, возможно, является наиболее важной частью процесса сборки, часто «сборка» запускает множество других программ после компилятора. Иногда полная сборка тратит больше времени на запуск этих других программ, чем на запуск компилятора.
Например, многим людям удобно иметь одну кнопку, чтобы не только компилировать весь исходный код до последней версии, но и выполнять стандартную серию тестов ( C2: тестирование одной кнопкой ).
Таким образом, make-файл также перечисляет все команды, необходимые для запуска этих тестов, которые становятся частью процесса сборки.