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



         

Использование внешних переменных


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

Предположим, что исходные тексты "pack.ads", "pack.adb" и "proc.adb" расположены в каталоге "/common".

Показанный ниже файл проекта "build.gpr", осуществляет опрос состояния внешней переменной с именем "STYLE", и определяет, таким образом, расположение каталога для сохранения объектных модулей и используемые опции, в зависимости от значения этой переменной.

При этом, когда значением переменной "STYLE" является "deb" (debug) - осуществляется сборка отладочной версии, а когда значением переменной является "rel" (release) - версия реализации.

По умолчанию, значением переменной "STYLE" является "deb".

project Build is

for Main use ("proc");

type Style_Type is ("deb", "rel"); Style : Style_Type := external ("STYLE", "deb");

case Style is

when "deb" => for Object_Dir use "debug";

when "rel" => for Object_Dir use "release"; for Exec_Dir use "."; end case;

package Builder is

case Style is

when "deb" => for Default_Switches ("Ada") use ("-g"); end case; end Builder;

package Compiler is

case Style is

when "deb" => for Default_Switches ("Ada") use ("-gnata", "-gnato", "-gnatE");

when "rel" => for Default_Switches ("Ada") use ("-O2"); end case; end Compiler;

end Build;

Тип Style_Type является примером строкового типа (string type), который в файлах проектов является своеобразным аналогом перечислимого типа Ады, и вместо идентификаторов содержит строковые литералы.




Содержание  Назад  Вперед