首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个链接GPRBuild项目中相同的基本包

多个链接GPRBuild项目中相同的基本包
EN

Stack Overflow用户
提问于 2018-11-02 18:45:42
回答 1查看 285关注 0票数 6

使用GPRBuild,我创建了一个名为Lib的库项目。Lib中的所有包都驻留在包Base中,我将其用作基本包:拥有一个基本包Base。例如,如果我要在我创建的任何库或应用程序中创建包Apple,那么它将被写成package Base.Apple

这方面的问题是,使用GPRBuild。为了把东西放在Base包下,它需要存在。因此,在GPRBuild库项目Lib中,我有一个表示包Base存在的文件base.ads。然后,在我使用库Lib的项目中,让我们将它称为Proj,我还将所有包放在Base包下(Proj中的包)。为了做到这一点,我们还需要为Proj创建一个Proj文件,并为其定义包Base

让我们看一下gpr项目文件:

代码语言:javascript
复制
with "lib.gpr";

project Proj is
   -- ...
end Proj;

通过这个问题,我们突然产生了两个文件,都叫做base.ads,它们都定义了Base包,每个项目中都有一个:库项目Lib和使用库Lib的项目Proj。由于我们有两个包(以及它们的文件)名为相同,所以在编译时会得到这个错误,这一点也就不足为奇了:

unit "base" cannot belong to several projects

问题是:是否有办法在多个项目中使用相同的基础包?然后通过导入(with)链接到一起的项目。如果事实证明是可能的话,如何才能实现呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-02 19:53:40

您需要将Base包放入自己的项目中。下面是一个最小的演示。

base/中,

代码语言:javascript
复制
project Base is
end Base;

package Base is
end Base;

lib/中,

代码语言:javascript
复制
with "../base/base.gpr";
project Lib is
end Lib;

package Base.Lib is
end Base.Lib;

proj/中,

代码语言:javascript
复制
with "../lib/lib.gpr";
project Proj is
end Proj;

with Base.Lib;
package Base.Proj is
end Base.Proj;

然后,

代码语言:javascript
复制
$ cd proj/
$ gprbuild
using project file proj.gpr
Compile
   [Ada]          base.ads
   [Ada]          base-lib.ads
   [Ada]          base-proj.ads
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53124246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档