Makefile
makefile — это файл, содержащий набор инструкций, используемых утилитой make в инструментарии автоматизации сборки. ОбзорЧаще всего makefile содержит указания для утилиты make о том, как компилировать и компоновать программу. Например, для языков программирования С/C++ исходный файл C или C++ должен быть перекомпилирован при каждом своем изменении. Если меняется заголовочный файл, каждый C/C++ исходный файл, включающий его, должен быть перекомпилирован, чтобы быть безопасным. Каждая компиляция создает объектный файл, соответствующий исходному файлу. Наконец, если исходный файл был скомпилирован, то все объектные файлы, будь то вновь созданные или сохраненные с предыдущих компиляций, должны быть скомпонованы вместе, чтобы собрать новый исполняемый файл программы[1]. Эти инструкции вместе со своими зависимостями указаны в makefile. Если с последней компиляции ни один из файлов, необходимых для сборки, не менялся, то при компиляции ничего не происходит. Для больших проектов, использование make-файлов может значительно сократить время сборки приложений при изменении всего лишь нескольких исходных файлов. Операционная системаUnix-подобные ОСMake-файлы возникли на Unix-подобных системах и остаются основным средством сборки программ в данных окружениях. Microsoft WindowsWindows поддерживает различные виды make-файлов при помощи утилиты nmake. Стандартные make-файлы из Unix-подобных ОС могут быть выполнены в операционной системе Windows в среде Cygwin. СодержаниеMake-файлы состоят из 5 составляющих: явных правил, неявных правил, определений переменных, директив и комментариев.
ПравилаMake-файл содержит «правила» в следующей форме: target: dependencies
system command(s)
Целью (target) обычно является имя файла, который генерируется программой; примеры целей — исполняемые или объектные файлы. Цель может также являться именем действия, которое необходимо выполнить, например, «clean». Зависимость (также называется предварительным условием) — это файл, используемый в качестве входных данных для создания цели. Цель часто зависит от нескольких файлов. Однако, правило, указывающее способ для цели, не должно иметь любых предварительных условий. Например, правило, содержащее команду delete («удалить»), связано с целью clean («очистить»), не имеющей предварительного условия. Системная команд(ы) (также называемая способом) — это действие, которое выполняет утилита make. Способ может содержать более одной команды, либо в той же строке или каждая в своей строке. Выполнениеmake-файл выполняется при помощи команды ПримерПростой makefile, который описывает, как исполняемый файл с именем edit зависит от четырех объектных файлов, которые, в свою очередь, зависят от четырех C-исходников и двух заголовочных файлов. edit: main.o kbd.o command.o display.o
cc -o edit main.o kbd.o command.o display.o
main.o: main.c defs.h
cc -c main.c
kbd.o: kbd.c defs.h command.h
cc -c kbd.c
command.o: command.c defs.h command.h
cc -c command.c
display.o: display.c defs.h
cc -c display.c
clean:
rm edit main.o kbd.o command.o display.o
Чтобы использовать этот make-файл для создания исполняемого файла edit, необходимо набрать команду Список литературы
Ссылки
|