我的目录结构为
-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从源文件本身中提取指令?