Управляющая программа gnat и файлы проектов
Кроме утилиты gnatmake, существуют другие инструментальные средства системы GNAT, которые ориентированы на обработку проектов.
К таким инструментальным средствам относятся: gnatbind, gnatfind, gnatlink, gnatls и gnatxref.
Следует однако заметить, что ни один из этих инструментов не может непосредственно использовать опцию указания файла проекта ("-P").
Таким образом, необходимо осуществлять запуск этих инструментов с помощью управляющей программы gnat (или gnatcmd).
Управляющая программа gnat обеспечивает внешний интерфейс инструментальных средств. Она принимает целый перечень команд и осуществляет вызов соответствующих инструментальных средств.
Изначально, управляющая программа gnat была разработана для VMS, с целью преобразования квалификаторов стиля VMS в опции стиля UNIX.
Однако, в настоящий момент эта программа доступна для всех платформ, которые поддерживает система компилятора GNAT.
На платформах отличных от VMS, управляющая программа gnat принимает следующие команды (вне зависимости от регистра символов):
Следует заметить, что запуск компилятора осуществляется с помощью команды "gnatmake -f -u".
Вслед за командой можно указать опции и аргументы, которые будут переданы соответствующему инструментальному средству:
gnat bind -C main.ali gnat ls -a main gnat chop foo.txt |
Для команд: BIND, FIND, LS или LIST, LINK и XREF, - в дополнение к опциям, которые применимы для непосредственно вызываемого инструментального средства, могут быть использованы опции, которые характерны для файлов проектов (-P, -X and -vPx).
Для каждой из этих команд, в главном проекте возможно существование пакета, который соответствует запускаемому инструментальному средству:
Пакет Gnatls обладает уникальным атрибутом Switches, простая переменная со значением в виде списка строк. Атрибут содержит опции используемые при запуске gnatls.
project Proj1 is package gnatls is for Switches use ("-a", "-v"); end gnatls; end Proj1; |
Атрибут "Default_Switches ("Ada")" содержит опции, которые используются при запуске инструментального средства соответствующего пакету.
project Proj is for Source_Dirs use ("./**"); package gnatls is for Switches use ("-a", "-v"); end gnatls; package Binder is for Default_Switches ("Ada") use ("-C", "-e"); end Binder; package Linker is for Default_Switches ("Ada") use ("-C"); end Linker; package Finder is for Default_Switches ("Ada") use ("-a", "-f"); end Finder; package Cross_Reference is for Default_Switches ("Ada") use ("-a", "-f", "-d", "-u"); end Cross_Reference; end Proj; |
gnat ls -Pproj main gnat xref -Pproj main gnat bind -Pproj main.ali |