Compilation 在Adacore';s GPR文件,如何设置编译器以排除具有完整路径的文件
我有一个项目,其中包含几个文件有相同的名称,但在不同的文件夹 例: 在我的gprfile中,我将源代码与Compilation 在Adacore';s GPR文件,如何设置编译器以排除具有完整路径的文件,compilation,ada,gprbuild,Compilation,Ada,Gprbuild,我有一个项目,其中包含几个文件有相同的名称,但在不同的文件夹 例: 在我的gprfile中,我将源代码与 for Source_Dirs use ( "sources/**" ) 现在,我想使用原语“Excluded\u Source\u File”忽略src中的文件 不幸的是,这个原语需要一个文件名,而不是一个完整路径,所以当我想忽略a.c时,它会忽略src和stub中的两个文件 for Excluded_Source_Files use ( "sources/src/a.c" ); --
for Source_Dirs use ( "sources/**" )
现在,我想使用原语“Excluded\u Source\u File”忽略src中的文件
不幸的是,这个原语需要一个文件名,而不是一个完整路径,所以当我想忽略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
有人知道我如何做到这一点,而不改变当前文件夹体系结构,也不重命名文件吗?听起来你想要的是一个项目扩展名,即创建第二个项目文件,扩展第一个项目文件。在此项目文件中,您可以覆盖
a.c
project Stubbed extends "my_project.gpr" is
for Source_Dirs use ("stub");
end Stubbed;
您可以在我将使用的中阅读有关项目扩展的更多信息;而且,听起来好像排除的\u Source\u 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;
或
无论哪种情况
gprbuild -P prj
(您可以添加默认的-XSOURCES=normal
)或
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
gprbuild -P prj -XSOURCES=stubbed