Общие правила наименования файлов
Не зависимо от используемой операционной системы (Microsoft Windows или Linux) компилятор GNAT достаточно активно использует суффиксы имен файлов (иначе, расширения имен файлов).
Ниже перечисляются общие соглашения GNAT по использованию суффиксов имен файлов:
.ads | - | файл с исходным текстом спецификации пакета Ады |
.adb | - | файл с исходным текстом тела пакета Ады или Ада-программы |
.adc | - | файл конфигурации GNAT |
.adt | - | файл дерева зависимостей |
.ali | - |
файл содержащий информацию для связывания и отладки, который генерируется GNAT в процессе компиляции |
.xrb | - | файл перекрестных ссылок генерируемый утилитой gnatf |
По умолчанию, имя файла определяется именем модуля, который содержится в этом файле.
Имя файла формируется путем взятия полного расширенного имени модуля и замене разделительных точек символами дефиса ('-').
Следует заметить, что при формировании имени файла используются буквы только нижнего регистра.
Исключение из этого правила касается файлов чьи имена начинаются символами a, g, i или s, а следующим символом является символ дефиса.
В этом случае вместо символа дефиса ('-') используется символ тильды ('~').
Смысл таких специальных правил заключается в том, что это позволяет избежать конфликта имен с файлами стандартной библиотеки, которые содержат дочерние модули пакетов System, Ada, Interfaces и GNAT, использующих для имен файлов префиксы s-, a-, i- или g-, соответственно.
Следующий список демонстрирует некоторые примеры использования этих правил именования файлов:
main.ads | - | Спецификация главной программы |
main.adb | - | Тело главной программы |
arith_functions.ads | - | Спецификация пакета Arith_Functions |
arith_functions.adb | - | Тело пакета Arith_Functions |
func-spec.ads | - | Спецификация дочернего пакета Func.Spec |
func-spec.adb | - | Тело дочернего пакета Func.Spec |
main-sub.adb | - | Тело Sub субмодуля Main |
a~bad.adb | - | Тело дочернего пакета A.Bad |
Соблюдение этих правил при наличии длинных имен модулей (например, в случае глубокой вложенности модулей) может привести к чрезмерно длинным именам файлов.
Для усечения длин имен файлов можно использовать "уплотнение" имен файлов.
В частности, это может быть полезно когда в используемой операционной системе действуют ограничения на длину имени файла.
Естественно, алгоритм "уплотнения" имен файлов не может полностью гарантировать уникальность для всех возможных имен файлов.
Это означает, что при использовании "уплотнения" имен файлов окончательная ответственность за уникальность имен файлов возлагается на разработчика приложения.
В качестве альтернативы может быть использовано явное указание имен файлов (рассматривается далее).
При переносе Ада-программы из среды компилятора который поддерживает другие соглашения по наименованию файлов для создания файлов с исходными текстами, имена которых будут соответствовать соглашениям GNAT, может быть использована утилита gnatchop.