1

我有一个目录结构

-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开关,但它似乎也需要一个文件。我已经检查了这里和我本地机器上的 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 从源文件本身中提取指令?

4

0 回答 0