В GPR-файле Adacore, как настроить компилятор на исключение файла с полным путем
У меня есть проект, который содержит несколько файлов, которые имеют одинаковые имена, но в разных папках.
Пример:
->sources
->src
- a.c
- b.c
->stub
- a.c
- z.c
В моем gprfile я включил источник с
for Source_Dirs use ( "sources/**" )
Теперь я хочу игнорировать файлы в src, используя примитив "Excluded_Source_File".
К сожалению, этому примитиву нужно имя файла, а не полный путь, поэтому, когда я хочу игнорировать ac, он игнорирует оба файла в src и stub.
for Excluded_Source_Files use ( "sources/src/a.c" ); -- KO by gprbuild
for Excluded_Source_Files use ( "a.c" ); -- OK but ignore both
Кто-нибудь знает, как я могу это сделать, без изменения текущей архитектуры папок и без переименования файлов?
2 ответа
Похоже, что вы хотите, это расширение проекта, т.е. создайте второй файл проекта, который расширяет первый. В этом файле проекта секунд, вы можете переопределить a.c
project Stubbed extends "my_project.gpr" is
for Source_Dirs use ("stub");
end Stubbed;
Подробнее о расширениях проекта вы можете прочитать в Руководстве пользователя GPRBuild.
Я бы использовал переменные сценария; Кроме того, это звучит так, как будто Excluded_Source_Dirs
было бы полезно.
type Source_T is ("normal", "stubbed");
Sources : Source_T := external ("SOURCES", "normal");
тогда либо
for Source_Dirs use ("sources/**");
case Sources is
when "normal" =>
for Excluded_Source_Dirs use ("sources/stub");
when "stubbed" =>
for Excluded_Source_Dirs use ("sources/src");
end case;
или же
for Source_Dirs use ("sources");
case Sources is
when "normal" =>
for Source_Dirs use project'Source_Dirs & "sources/src";
when "stubbed" =>
for Source_Dirs use project'Source_Dirs & "sources/stub";
end case;
В любом случае,
gprbuild -P prj
(Вы можете добавить дефолт -XSOURCES=normal
) или же
gprbuild -P prj -XSOURCES=stubbed