Блокфлейта
- 1 year ago
- 0
- 0
makefile — это файл, содержащий набор инструкций, используемых утилитой make в инструментарии автоматизации сборки .
Чаще всего makefile содержит указания для утилиты make о том, как компилировать и компоновать программу. Например, для языков программирования С / C++ исходный файл C или C++ должен быть перекомпилирован при каждом своем изменении. Если меняется заголовочный файл , каждый C/C++ исходный файл, включающий его, должен быть перекомпилирован, чтобы быть безопасным. Каждая компиляция создает объектный файл , соответствующий исходному файлу. Наконец, если исходный файл был скомпилирован, то все объектные файлы, будь то вновь созданные или сохраненные с предыдущих компиляций, должны быть скомпонованы вместе, чтобы собрать новый исполняемый файл программы . Эти инструкции вместе со своими зависимостями указаны в makefile . Если с последней компиляции ни один из файлов, необходимых для сборки, не менялся, то при компиляции ничего не происходит. Для больших проектов, использование make-файлов может значительно сократить время сборки приложений при изменении всего лишь нескольких исходных файлов.
Make-файлы возникли на Unix-подобных системах и остаются основным средством сборки программ в данных окружениях.
Windows поддерживает различные виды make-файлов при помощи утилиты nmake . Стандартные make-файлы из Unix-подобных ОС могут быть выполнены в операционной системе Windows в среде Cygwin .
Make-файлы состоят из 5 составляющих: явных правил , неявных правил , определений переменных , директив и комментариев .
Make-файл содержит «правила» в следующей форме:
target: dependencies system command(s)
Целью (target) обычно является имя файла, который генерируется программой; примеры целей — исполняемые или объектные файлы. Цель может также являться именем действия, которое необходимо выполнить, например, «clean».
Зависимость (также называется предварительным условием) — это файл, используемый в качестве входных данных для создания цели. Цель часто зависит от нескольких файлов. Однако, правило, указывающее способ для цели, не должно иметь любых предварительных условий. Например, правило, содержащее команду delete («удалить»), связано с целью clean («очистить»), не имеющей предварительного условия.
Системная команд(ы) (также называемая способом) — это действие, которое выполняет утилита make. Способ может содержать более одной команды, либо в той же строке или каждая в своей строке.
make-файл
выполняется при помощи команды
make
, например,
make [options] [target1 target2 ...]
. По умолчанию, когда утилита make ищет make-файл и если имя make-файла не было указано в качестве параметра, то make пробует следующие имена по порядку: makefile и Makefile.
Простой 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
, необходимо набрать команду
make
. Чтобы использовать этот make-файл для удаления исполняемого файла и всех объектных файлов из каталога, необходимо набрать команду
make clean
.