多个链接的 GPRBuild 项目中的相同基础包
Same Base Package in Multiple Linked GPRBuild Projects
使用 GPRBuild,我创建了一个名为 Lib
的库项目。 Lib
中的所有包都位于包 Base
中,我将其用作基础包:拥有基础包 Base
。例如,如果我要在我创建的任何库或应用程序中创建包 Apple
,它将写成 package Base.Apple
.
这个问题,使用 GPRBuild。为了将东西放在 Base
包下,它需要存在。因此,在 GPRBuild 库项目 Lib
中,我有一个文件 base.ads
表示包 Base
的存在。然后在我使用库 Lib
的项目中,我们将其称为 Proj
,我还将所有包放在 Base
包下([=22= 中的包]).为此,我们还需要为 Proj
创建一个 base.ads
文件,其中包含 Base
.
的包定义
让我们看一下gpr
项目文件:
with "lib.gpr";
project Proj is
-- ...
end Proj;
问题由此而生;我们突然有两个文件,都叫 base.ads
,都定义 Base
包,每个项目一个:库项目 Lib
,项目 Proj
使用库 Lib
。由于我们有两个名称相同的包(和它们的文件),我们在编译时得到这个错误,这并不奇怪:
unit "base" cannot belong to several projects
问题是:有没有办法在多个项目中使用相同的基础包?然后通过导入链接在一起的项目 (with
)。如果应该被证明是可能的,如何实现?
您需要将 Base
包放在它自己的项目中。以下是一个最小的演示。
在base/
,
project Base is
end Base;
package Base is
end Base;
在lib/
,
with "../base/base.gpr";
project Lib is
end Lib;
package Base.Lib is
end Base.Lib;
在proj/
,
with "../lib/lib.gpr";
project Proj is
end Proj;
with Base.Lib;
package Base.Proj is
end Base.Proj;
然后,
$ cd proj/
$ gprbuild
using project file proj.gpr
Compile
[Ada] base.ads
[Ada] base-lib.ads
[Ada] base-proj.ads
使用 GPRBuild,我创建了一个名为 Lib
的库项目。 Lib
中的所有包都位于包 Base
中,我将其用作基础包:拥有基础包 Base
。例如,如果我要在我创建的任何库或应用程序中创建包 Apple
,它将写成 package Base.Apple
.
这个问题,使用 GPRBuild。为了将东西放在 Base
包下,它需要存在。因此,在 GPRBuild 库项目 Lib
中,我有一个文件 base.ads
表示包 Base
的存在。然后在我使用库 Lib
的项目中,我们将其称为 Proj
,我还将所有包放在 Base
包下([=22= 中的包]).为此,我们还需要为 Proj
创建一个 base.ads
文件,其中包含 Base
.
让我们看一下gpr
项目文件:
with "lib.gpr";
project Proj is
-- ...
end Proj;
问题由此而生;我们突然有两个文件,都叫 base.ads
,都定义 Base
包,每个项目一个:库项目 Lib
,项目 Proj
使用库 Lib
。由于我们有两个名称相同的包(和它们的文件),我们在编译时得到这个错误,这并不奇怪:
unit "base" cannot belong to several projects
问题是:有没有办法在多个项目中使用相同的基础包?然后通过导入链接在一起的项目 (with
)。如果应该被证明是可能的,如何实现?
您需要将 Base
包放在它自己的项目中。以下是一个最小的演示。
在base/
,
project Base is
end Base;
package Base is
end Base;
在lib/
,
with "../base/base.gpr";
project Lib is
end Lib;
package Base.Lib is
end Base.Lib;
在proj/
,
with "../lib/lib.gpr";
project Proj is
end Proj;
with Base.Lib;
package Base.Proj is
end Base.Proj;
然后,
$ cd proj/
$ gprbuild
using project file proj.gpr
Compile
[Ada] base.ads
[Ada] base-lib.ads
[Ada] base-proj.ads