Ада-95. Компилятор GNAT

       

Управляющая программа gnat и файлы проектов


Кроме утилиты gnatmake, существуют другие инструментальные средства системы GNAT, которые ориентированы на обработку проектов.

К таким инструментальным средствам относятся: gnatbind, gnatfind, gnatlink, gnatls и gnatxref.

Следует однако заметить, что ни один из этих инструментов не может непосредственно использовать опцию указания файла проекта ("-P").

Таким образом, необходимо осуществлять запуск этих инструментов с помощью управляющей программы gnat (или gnatcmd).

Управляющая программа gnat обеспечивает внешний интерфейс инструментальных средств. Она принимает целый перечень команд и осуществляет вызов соответствующих инструментальных средств.

Изначально, управляющая программа gnat была разработана для VMS, с целью преобразования квалификаторов стиля VMS в опции стиля UNIX.

Однако, в настоящий момент эта программа доступна для всех платформ, которые поддерживает система компилятора GNAT.

На платформах отличных от VMS, управляющая программа gnat принимает следующие команды (вне зависимости от регистра символов):

  • BIND для запуска gnatbind

  • CHOP для запуска gnatchop

  • COMP или COMPILE для запуска компилятора
  • ELIM для запуска gnatelim

  • FIND для запуска gnatfind

  • KR или KRUNCH для запуска gnatkr

  • LINK для запуска gnatlink

  • LS или LIST для запуска gnatls

  • MAKE для запуска gnatmake

  • NAME для запуска gnatname

  • PREP или PREPROCESS для запуска gnatprep

  • PSTA или STANDARD для запуска gnatpsta

  • STUB для запуска gnatstub

  • XREF для запуска gnatxref

    Следует заметить, что запуск компилятора осуществляется с помощью команды "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).




    Для каждой из этих команд, в главном проекте возможно существование пакета, который соответствует запускаемому инструментальному средству:

  • "package Binder" - для команды BIND (запускает gnatbind)
  • "package Finder" - для команды FIND (запускает gnatfind)
  • "package Gnatls" - для команды LS или LIST (запускает gnatls)
  • "package Linker" - для команды LINK (запускает gnatlink)
  • "package Cross_Reference" - для команды XREF (запускает gnatlink)

    Пакет Gnatls обладает уникальным атрибутом Switches, простая переменная со значением в виде списка строк. Атрибут содержит опции используемые при запуске gnatls.

    project Proj1 is

    package gnatls is

    for Switches use ("-a", "-v"); end gnatls; end Proj1;

    Все остальные пакеты обладают атрибутом Default_Switches, ассоциативный массив, который индексируется именем языка программирования (не зависит от регистра символов) и имеет значение в виде списка строк.

    Атрибут "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

    будут правильно устанавливать рабочее окружение и осуществлять запуск инструментальных средств используя опции, которые указаны в пакетах соответствующих инструментальным средствам.


    Содержание раздела