Одинаковый базовый пакет в нескольких связанных проектах GPRBuild

С 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). Если это окажется возможным, как это может быть достигнуто?

1 ответ

Решение

Вам нужно поставить 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
Другие вопросы по тегам