我有一个项目,其中包含几个具有相同名称但在不同文件夹中的文件。
例如:
- >源 - > SRC - a.c - b.c - >存根 - a.c - z.c在……
我会用 场景变量 ;而且,听起来好像 Excluded_Source_Dirs 会有用的。
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 ) 要么
-XSOURCES=normal
gprbuild -P prj -XSOURCES=stubbed
听起来你想要的是一个项目扩展,即。创建第二个项目文件,扩展第一个。在这个秒项目文件中,您可以覆盖 a.c
a.c
project Stubbed extends "my_project.gpr" is for Source_Dirs use ("stub"); end Stubbed;
您可以在中阅读有关项目扩展的更多信息 GPRBuild用户指南