Ada 封装库项目 GNAT

Ada Encapsulated Library Project GNAT

我正在尝试使用 GNAT 95 在我的计算机上编译程序 运行 CENTOS 7 64 位 GNAT-GPL 2015 bundle。我收到如下所示的编译器消息:

gprbuild: encapsulated library projects not supported on this platform

我的 GPR 文件如下所示:

with "bc.gpr";  -- Pull in the booch95 components since ada95 doesnt have collections
with "mylibrary.gpr"; -- one of my library projects

library project Registry is
    for Source_Dirs use ("src/**");
    for Object_Dir use "bin";

    for Library_Name use "registry";
    for Library_Standalone use "encapsulated";
    for Library_ALI_Dir use "lib/registry";
    for Library_Dir use "plugins";
    for Library_Kind use "dynamic";
    for Library_Interfaces use ("...");

    package Compiler is
        for Default_Switches ("Ada") use ("-g", "-gnat95");
    end Compiler;

    package Linker is
        for Linker_Options use ("-ldl", "-lgcov");
    end Linker;
end project;

Booch 组件库是一个静态库项目。删除封装导致 Ada 抛出另一个关于尝试混合静态和动态库的错误:

shared library project "registry" cannot import static library project "bc"

知道什么可能导致 Ada 编译器崩溃吗?

除非您使用的是 非常 旧版本的 BC,您可以通过将场景变量 LIBRARY_TYPE 设置为 relocatable;通过设置为环境变量,或者

gprbuild -XLIBRARY_TYPE=relocatable ...

或使用 GPS。我不是 GPS 用户,但经过调查似乎(使用 GPS GPL 2014)你 select Scenario 在左侧的选项卡中,应该显示场景您项目中的变量及其依赖的项目(在您的情况下为bc)。 Select你想改变的那一个点击笔图标,你会得到一个对话框来更新它。