5

如何加载两个同名但位于不同文件夹中的包?

例子:

/src/alpha/foopackage.ads
/src/beta/foopackage.ads

然后我想使用 foopackages 使用:

with alpha.foopackage; 
with beta.foopackage; 

此外,如果您对在 Ada 中组织项目有任何其他提示,请写信。网上关于 Ada 中项目组织的信息并不多。

4

2 回答 2

5

你已经解决了问题!

src/alpha/foopackage.ads 包含:

package alpha.foopackage is

   ...

end alpha.foopackage;

而 src/beta/foopackage.ads 包含:

package beta.foopackage is

   ...

end beta.foopackage;

现在,如果您使用 GNAT 及其默认命名约定,您将遇到一个临时问题。此命名约定要求文件分别命名为 alpha-foopackage.ads 和 beta-foopackage.ads。

如果您坚持使用 foopackage.ads 作为文件名,则可以解决此约定。对于 GNAT,请参阅使用 gnatname 处理任意文件命名约定使用其他文件名替代文件命名方案

于 2013-05-12T17:52:34.057 回答
4

这几乎是导致这个答案的问题的重复。

但是,还有另一个与命名有关的问题,即 GNAT(我认为您正在使用 GNAT?)具有默认的文件命名约定(有一些方法可以覆盖此约定,但您需要一个很好的理由来打扰)。

alpha-foopackage.ads所以你的源文件,无论你选择把它们放在什么目录,都应该分别命名beta-foopackage.ads

于 2013-05-12T17:58:09.347 回答