Compilation 如何使用GNAT编译Ada项目(已经在green hills中编译)

Compilation 如何使用GNAT编译Ada项目(已经在green hills中编译),compilation,ada,preprocessor,gnat,greenhills,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 (The

我有一个目录结构

-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文件中的命名包来获取
gprbuild
以相应地识别我的规范和主体文件。我的问题开始于这样一个事实,即我的ada源文件中有预处理器指令(而不是一个单独的文件,我从文档中假设它是
gnatprep
想要的)。我尝试过使用
-gantep
开关,但它似乎也需要一个文件。我已经检查了本地机器上的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;

现在我意识到这还远远没有完成,但我的第一个目标是编译这个东西。我目前的理解是编译失败是因为预处理器没有运行,这就是编译失败的原因(gnat告诉我有非法字符,但greenhills编译源代码很好)


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

您是否创建了预处理器数据文件?根据链接文档,switch
-gnatep=preprocessor_data_file
需要预处理器数据文件的名称。我没有,我用一些基本参数创建了一个,似乎我不理解该文件的含义。它仍然没有编译/成功预处理,但已经取得了进展。如果这确实是答案,我会报告你是否创建了预处理器数据文件?根据链接文档,switch
-gnatep=preprocessor_data_file
需要预处理器数据文件的名称。我没有,我用一些基本参数创建了一个,似乎我不理解该文件的含义。它仍然没有编译/成功预处理,但已经取得了进展。如果这确实是答案,我会向你汇报