За исключением небольшого набора очень простых задач, почти все реальные программы на C будут созданы из нескольких модулей, заголовочных файлов, внешних библиотек, иногда охватывающих несколько папок. В некоторых случаях дополнительный код может быть связан с использованием различных инструментов (например, генераторов кода).
В этих случаях одиночная команда 'cc' не будет работать. Следующим решением будет автоматизировать сборку с использованием сценария сборки. Тем не менее, сборка может занять много времени и практически невозможна для обслуживания.
Для сборки программ на языке "С" Make предоставляет множество преимуществ поверх простого сценария сборки оболочки. Это моя личная "топ-3"
- Инкрементная сборка - при изменении файлов кода make может идентифицировать выполнение минимального набора инструкций по сборке вместо перекомпоновки всего кода. Это может значительно повысить эффективность работы разработчиков.
- Сборка на основе правил - make использует правила для создания целей. Как только вы определите правило (одно очевидное правило: скомпилируйте файл «.c» в «.o»), их можно применять последовательно ко всем файлам.
- обеспечивает настройку для полного процесса сборки, включая установку кода, очистка, упаковка, тестирование и т. д. Очень важно, чтобы make мог интегрировать (почти) любой инструмент Unix в процесс сборки - генерацию кода и т. д.
Излишне говорить, что есть и другие инструменты сборкикоторые предоставляют дополнительные / альтернативные преимущества. CMake, gradle, SCons и многие другие.