В GPR-файле Adacore, как настроить компилятор на исключение файла с полным путем - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть проект, который содержит несколько файлов с одинаковыми именами, но в разных папках.

Пример:

 ->sources
    ->src 
      - a.c
      - b.c
    ->stub
      - a.c
      - z.c

В моем gprfile я включил источник с

for Source_Dirs use ( "sources/**" )

Теперь я хочу игнорировать файлы в src, используя примитив Excluded_Source_File.

К сожалению, этому примитиву нужно имя файла, а не полный путь, поэтому, когда я хочу игнорировать a.c, он игнорирует оба файла в 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 ]

0 голосов
/ 19 ноября 2018

Я бы использовал переменные сценария ;также, звучит так, как будто 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
0 голосов
/ 19 ноября 2018

Похоже, что вы хотите, это расширение проекта, т.е. создайте второй файл проекта, который расширяет первый. В этом файле проекта секунд вы можете переопределить a.c

project Stubbed extends "my_project.gpr" is
   for Source_Dirs use ("stub");
end Stubbed;

Подробнее о расширениях проекта можно прочитать в Руководстве пользователя GPRBuild

...