Общие сведения о GNU make
В процессе своей работы утилита GNU make осуществляет интерпретацию набора правил, которые сохранены в файле управления сборкой проекта с именем Makefile.
Правила описывают зависимость одних файлов от других файлов.
Каждое правило сопровождается командой (или последовательностью команд), которую необходимо выполнить для обновления файлов (например, команда может выполнять компиляцию файлов).
Кроме того, файлы управления сборкой проекта (Makefile) могут содержать в себе комментарии, переменные и правила, которые ссылаются на параметры команды make.
Предположим, что Ада-программа называется dbase
и в ее состав входят следующие файлы с исходными текстами: common.adb, scanner.adb и parser.adb.
В этом случае файл Makefile может содержать в себе следующее правило:
dbase: common.o scanner.o parser.o gnatlink -o dbase |
Это правило говорит о том, что исполняемый файл dbase
зависит от трех файлов с исходными текстами на языке Ада, и чтобы выполненить обновление файла dbase
программа make должна заново скомпоновать его из указанных объектных файлов с помощью команды gnatlink.
Следует заметить, что при написании Ада-программ, которые использует файлы с исходными текстами на языке C основополагающая стратегия использования утилиты GNU make с компилятором GNAT заключается в создании правил, которые гарантируют правильную компиляцию файлов с исходными текстами на языке C, а затем завершают построение всего проекта с помощью выполнения команды gnatmake.
Рассмотрим пример простого файла управления сборкой проекта (Makefile), который будет осуществлять компиляцию Ада-программы main.adb, а также любых Ада-пакетов, которые используются в программе main.adb.
Этот пример будет работать со всеми небольшими проектами.
Для этого понадобиться отредактировать содержимое переменной OBJS, которая содержит перечень всех объектных файлов соответствующих Ада-пакетов используемых в реальной программе.
Для использования этого файла управления сборкой проекта необходимо просто выполнить команду make, которая осуществит автоматическую сборку проекта, или выполнить команду make clean
для удаления всех промежуточных файлов, которые были сгенерированы компилятором.
# Пример простого файла управления сборкой проекта Makefile # # Предполагается, что головная программа имеет имя "main.adb" #
OBJS = main.o somepackage.o # Правило компиляции файлов с исходными тектами на языке Ада .adb.o: gcc -c $< .SUFFIXES: .adb .o # Правило компоновки головной программы main: $(OBJS) gnatbind -xf main.ali; gnatlink main.ali clean: rm *.o *.ali core |