Как я могу скомпилировать проект Ada (который уже компилируется в зеленых холмах), используя GNAT - PullRequest
1 голос
/ 03 апреля 2019

У меня есть структура каталогов

-Root
   -Multiple Packages (they all follow this pattern)
      -greenhillsCompileSwitches.gpj
      -fileWithLocationsOfProjectSource.gpj
   -Source Code Directory
      -Build Package
         -MiscFiles.ada
      -Module Directories (They all follow this pattern)
         -ModuleDirectories.gpj (contains path of ea module.gpj)
         -Modules
            -specFileName.ada
            -bodyFileName.ada
            -module.gpj

Файлы gpj содержат все параметры, используемые для компиляции greenhills, а также пути для всех исходных файлов (через соответствующий gpj на протяжении всего проекта). Я пытаюсь преобразовать эту структуру в файл gpr, чтобы я мог скомпилировать исходные файлы, используя gnat (gprbuild)

До сих пор мне удалось установить правильный путь, и я использовал пакет Naming в файле gpr, чтобы получить gprbuild для распознавания моих файлов spec и body соответственно. Моя проблема начинается с того факта, что мои исходные файлы ada содержат директивы препроцессора (в отличие от отдельного файла, который, как я предполагаю, из документации gnatprep хочет). Я попытался использовать переключатель -gantep, но, похоже, он также ожидает файл. Я уже проверил здесь и документацию по комнатам на моей локальной машине, что и привело меня так далеко.

Мой файл gpr находится в одном из каталогов 'Multiple Packages' (в том же каталоге, что и основной проект gpj, чтобы упростить мою жизнь, используя те же относительные пути и сопоставить их), и пока он выглядит так

project ProjectName is
   for Source_Dirs use ("../Source Code Directory/**");
   for Languages use ("Ada");

   package Builder is
      for Global_Compilation_Switches("Ada") use("-gnat95");
   end Builder;

   package Compiler is 
      for Switches("Ada") use ("-gnatep=", "-s"); (this is my attempt)
   end Compiler;

   package Naming is (using naming since my source files are not .ads/.adb)
      for Spec (Name) use "specFileName.ada";
      for Body (Name) use "bodyFileName.ada";
   end Naming;

Теперь я понимаю, что это далеко не завершено, но моя первая цель - заставить эту вещь скомпилировать. В настоящее время я понимаю, что компиляция не удалась, потому что препроцессор не запущен, и поэтому компиляция не удалась (gnat сообщает мне, что есть недопустимые символы, но greenhills компилирует источники просто отлично).

Есть ли способ заставить gnat извлекать директивы из самих исходных файлов?

...