С GPRBuild я создал проект библиотеки под названием Lib
. Все пакеты в Lib
находятся в пакете Base
, который я использую в качестве базового пакета: иметь базовый пакет Base
. Например, если бы я создал пакет Apple
в любой библиотеке или приложении, которое я создал, он был бы записан как package Base.Apple
.
Проблема с этим при использовании GPRBuild. Чтобы поместить вещи в пакет Base
, он должен существовать. Поэтому в проекте библиотеки GPRBuild Lib
у меня есть файл base.ads
, обозначающий наличие пакета Base
. Затем в проекте, где я использую библиотеку Lib
, давайте назовем ее Proj
, я также поместил все свои пакеты в пакет Base
(пакеты внутри Proj
). Для этого нам нужно создать файл base.ads
для Proj
с определением пакета, Base
.
Давайте посмотрим на файл проекта gpr
:
with "lib.gpr";
project Proj is
-- ...
end Proj;
Из-за этого возникает проблема; у нас неожиданно появилось два файла, каждый из которых называется base.ads
, оба определяют пакет Base
, по одному в каждом проекте: проект библиотеки Lib
и проект Proj
с использованием библиотеки Lib
. Поскольку у нас есть два пакета (и их файлы) с одинаковыми именами, мы получаем эту ошибку, что вовсе не удивительно, во время компиляции:
unit "base" cannot belong to several projects
Вопрос: есть ли способ иметь один и тот же базовый пакет в нескольких проектах? Проекты, которые затем связываются вместе посредством импорта (with
). Если это окажется возможным, как этого достичь?