如何使用GNAT编译Ada项目(已经在绿色山丘中编译过)

时间:2019-04-03 14:25:27

标签: compilation ada preprocessor gnat greenhills

我的目录结构为

-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

来编译源文件。

到目前为止,我已经成功建立了正确的路径,并已使用gpr文件中的Naming包来获取gprbuild来相应地识别我的规格和主体文件。我的问题始于我的ada源文件中包含预处理器指令的事实(与单独的文件相反,我认为gnatprep会从文档中获取该文件)。我尝试使用-gantep开关,但似乎也希望有一个文件。我已经检查了here和本地计算机上的gnat文档,这是到目前为止的事情。

我的gpr文件位于“多个包”目录(与主项目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;

现在,我意识到这还远未完成,但是我的首要目标是让这件事编译。我目前的理解是,编译器由于预处理器未运行而失败,这就是编译失败的原因(gna告诉我有非法字符,但是greenhills可以很好地编译源代码)。

有没有办法告诉gnat从源文件本身中提取指令?

0 个答案:

没有答案