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

       

Опции gnatmake


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

Следующий список перечисляет опции, которые допускается использовать с утилитой gnatmake:

--GCC=compiler_name

Указывает программу используемую для компиляции. По умолчанию используется gcc (gnatgcc).

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

Как пример, --GCC="foo -x -y" указывает утилите gnatmake, что в качестве команды запуска компилятора необходимо использовать команду foo -x -y.

Примечательно, что опция -c всегда вставляется после имени команды.

Таким образом, показанный выше пример команды компилятора, которая будет использована утилитой gnatmake, в результате, будет иметь вид foo -c -x -y.

--GNATBIND=binder_name  - 

Указывает программу используемую в качестве редактора связей. По умолчанию используется редактор связей gnatbind.

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

Как пример, --GNATBIND="bar -x -y" указывает утилите gnatmake, что в качестве команды запуска редактора связей необходимо использовать команду bar -x -y.

Опции редактора связей, которые обычно принимаются утилитой gnatmake

для передачи их редактору связей, будут добавлены после bar -x -y.

--GNATLINK=linker_name  - 

Указывает программу используемую в качестве компоновщика. По умолчанию используется компоновщик gnatlink.

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

Как пример, --GNATLINK="lan -x -y" указывает утилите gnatmake, что в качестве команды запуска компоновщика необходимо использовать команду lan -x -y.

Опции компоновщика, которые обычно принимаются утилитой gnatmake

для передачи их компоновщику, будут добавлены после lan -x -y.

-a  - 

Эта опция указывает утилите gnatmake, что в процессе построения приложения, необходимо выполнять анализ всех файлов, включая внутренние системные файлы GNAT (например, предопределенные файлы Ада-библиотеки), а также все заблокированные файлы.

Заблокированными файлами являются файлы у которых запись в соответствующие ALI-файлы запрещена.

По умолчанию, утилита gnatmake не выполняет анализ таких файлов, поскольку подразумевается, что внутренние системные файлы GNAT обновлены, а также то, что все заблокированные файлы правильно установлены.

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

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

При необходимости полной перекомпиляции исходных текстов приложения, включая исходные тексты файлов библиотеки времени выполнения, может также оказаться полезным использование опции -f

совместно со специальными директивами управления конфигурацией компилятора, подобными не стандартной директиве компилятора Float_Representation.

По умолчанию, gnatmake -a выполняет компиляцию всех внутренних файлов GNAT путем использования gnatgcc -c -gnatg, а не gnatgcc -c.

-c  - 

Выполнить только компиляцию и не выполнять связывание и компоновку.

Выполняется по умолчанию, если корневой модуль, который специфицирован как file_name не является головным модулем.

В другом случае, утилита gnatmake будет пытаться выполнить связывание и компоновку, пока все объекты не будут обновлены и результирующий выполняемый файл не будет новее объектов.

-f  - 

Принудительная перекомпиляция.

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

-i  - 

В обычном режиме, утилита gnatmake выполняет компиляцию всех объектных файлов и ALI-файлов только в текущем каталоге.

При использовании опции -i

существующие в различных каталогах объектные и ALI-файлы будут соответственно переписаны.

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

При этом, если объектные и ALI-файлы не будут обнаружены в путях поиска объектных файлов Ады, то будут созданы новые объектные и ALI-файлы в каталоге, который содержит файлы с компилируемыми исходными текстами.

Если желательна другая организация, когда объектные файлы и файлы с исходными текстами храняться в отдельных каталогах, может быть использован удобный прием при котором в требуемых каталогах создаются ALI-файлы "заглушки".

При обнаружении таких файлов "заглушек", утилита gnatmake будет вынуждена выполнить перекомпиляцию соответствующих файлов с исходными текстами, и она поместит результирующие объектные и ALI-файлы в те каталоги, в которых были обнаружены файлы "заглушки".

-jn  - 

Использовать n процессов для выполнения перекомпиляции.

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

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

Если это вызывает проблемы, то следует перезапустить процесс сборки установив n в 1, для получения более чистого списка сообщений.

-k  - 

Продолжать выполнение сборки проекта после обнаружения ошибки компиляции настолько долго, насколько это возможно.

При использовании этой опции, в случае ошибок компиляции, после завершения своей работы, утилита gnatmake выдает список файлов с исходными текстами при компиляции которых были обнаружены ошибки.

-m  - 

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

В этом режиме gnatmake игнорирует различие меток времени вызванное только модификацией исходных текстов при котором производилось только добавление/удаление комментариев, пустых строк, символов пробела или табуляции.

Это подразумевает, что если в исходном тексте изменения затронули только комментарии или исходный текст был только переформатирован, то использование этой опции указывает утилите gnatmake, что нет необходимости выполнять перекомпиляцию файлов, зависимых от этого файла.

-M  - 

Проверка согласованности обновлений всех объектов.

В случае согласованности обновлений вывод взаимозависимости объектов производится на stdout

в форме которая позволяет непосредственное использование этой информации в файле Makefile

для сборки проекта под управлением программы GNU make.

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

Такое префиксное имя будет соответствовать тому, что было указано с помощью различных опций -aI и -I.

При использовании gnatmake -M -q, на stdout будут выводиться только имена файлов с исходными текстами, без относительных путей поиска файлов в каталогах.

Если указана только опция -M, то вывод зависимостей от внутренних системных файлов GNAT не производится.

Как правило, это отображает именно ту информацию которая необходима.

Если дополнительно указать опцию -a, то тогда будет отображаться информация о зависимости от внутренних системных файлах GNAT.

Примечательно, что зависимость от объектов которые расположены во внешних Ада-библиотеках (см. опции -aLdir) никогда не отображается.

-n  - 

Выполнить только проверку согласованности обновлений всех объектов, и не выполнять компиляцию, связывание и/или компоновку приложения.

Если при выполнении такой проверки обнаружена не согласованность обновлений, то будет показано полное имя первого файла который нуждается в перекомпиляции.

Многократное повторное использование этой опции, с последующей компиляцией показанных файлов с исходными текстами, в результате приведет к перекомпиляции всех требуемых модулей.

-o exec_name  - 

Определение имени для генерируемого исполняемого файла приложения. При этом имя исполняемого файла будет exec_name.

Если имя для генерируемого исполняемого файла приложения не указано явно, то тогда, по умолчанию, для получения имени исполняемого файла будет использовано имя указанного входного файла.

При этом, имя входного файла будет приведено, согласно правил хост системы, в форму, соответствующую имени исполняемого файла для хост системы.

-q  - 

Устанавливает "молчаливый" режим работы утилиты gnatmake.

При обычном режиме (без использования этой опции) утилита gnatmake

отображает все выполняемые ею команды.

-s  - 

Выполнить перекомпиляцию, если опции компилятора были изменены при последней компиляции.

Все опции компиляции, кроме -I и -o, рассматриваются в следующем порядке: порядок следования между различными опциями (которые заданы первыми буквами) игнорируется, но выполняется анализ порядка следования между одинаковыми опциями.

Например, указание опций -O -O2 будет отличаться от -O2 -O, но указание опций -g -O эквивалентно -O -g.

-v  - 

Устанавливает "многословный" режим при котором утилита gnatmake отображает смысл причины выполнения всех необходимых перекомпиляций.

-z  - 

Указывает на отсутствие главной подпрограммы.

В результате, выполняется связывание и компоновка программы даже в случае когда имя модуля, указанное в команде запуска утилиты gnatmake, является именем пакета.

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

Опции gcc
(gnatgcc)
 - 

Опция -g или любая другая опция заданная символом верхнего регистра (кроме -A или -L) или любая опция, которая описывается более чем одним символом будет передана gnatgcc (например, -O, -gnato и т.д.).



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