отдельная процедура в аде - PullRequest
       18

отдельная процедура в аде

4 голосов
/ 20 августа 2011

У меня очень большой проект, и я пытаюсь начать использовать GPS (Gnat Programming Studio) вместо того, что у меня есть.

Соглашения об именах проекта следующие:

что-то 1. Ада для спецификации

что-то.2.ада для тела

parent.son.2.ada для отдельной процедуры / функций, где родительский элемент - это место, где объявлена ​​отдельная функция / процедура, а son - имя отдельной функции / процедуры. Это может быть даже сложнее, как в grandparent.parent.son.2.ada

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

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

Как правильно настроить GPS?

Ответы [ 2 ]

5 голосов
/ 20 августа 2011

Вам нужен файл проекта GNAT с пакетом Naming. Ваша схема именования напоминает схему именования Apex, описанную в Руководстве пользователя GPRbuild , в частности здесь .

Так что это будет

package Naming is
   for Casing               use "lowercase";
   for Dot_Replacement      use ".";
   for Spec_Suffix ("Ada")  use ".1.ada";
   for Body_Suffix ("Ada")  use ".2.ada";
end Naming;

Я не думаю, что вам нужно

   for Separate_Suffix ("Ada") use ".2.ada";

потому что

Обозначает суффикс, используемый в именах файлов, содержащих отдельные тела. Если он не указан, то по умолчанию используется то же значение, что и Body_Suffix ("Ada").

2 голосов
/ 23 августа 2011

Другой вариант, о котором Саймон не упомянул, - это запустить gnatchop в вашей программе.gnatchop - это программа, которая переименует все ваши файлы в имена, которые Gnat ищет по умолчанию.

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

...