Makefile


makefile — это файл, содержащий набор инструкций, используемых утилитой make в инструментарии автоматизации сборки.

Чаще всего makefile содержит указания для утилиты make о том, как компилировать и компоновать программу. Например, для языков программирования С/C++ исходный файл C или C++ должен быть перекомпилирован при каждом своем изменении. Если меняется заголовочный файл, каждый C/C++ исходный файл, включающий его, должен быть перекомпилирован, чтобы быть безопасным. Каждая компиляция создает объектный файл, соответствующий исходному файлу. Наконец, если исходный файл был скомпилирован, то все объектные файлы, будь то вновь созданные или сохраненные с предыдущих компиляций, должны быть скомпонованы вместе, чтобы собрать новый исполняемый файл программы[1]. Эти инструкции вместе со своими зависимостями указаны в makefile. Если с последней компиляции ни один из файлов, необходимых для сборки, не менялся, то при компиляции ничего не происходит. Для больших проектов, использование make-файлов может значительно сократить время сборки приложений при изменении всего лишь нескольких исходных файлов.

Make-файлы возникли на Unix-подобных системах и остаются основным средством сборки программ в данных окружениях.

Windows поддерживает различные виды make-файлов при помощи утилиты nmake. Стандартные make-файлы из Unix-подобных ОС могут быть выполнены в операционной системе Windows в среде Cygwin.

Make-файлы состоят из 5 составляющих: явных правил, неявных правил, определений переменных, директив и комментариев.

Целью (target) обычно является имя файла, который генерируется программой; примеры целей — исполняемые или объектные файлы. Цель может также являться именем действия, которое необходимо выполнить, например, «clean».