Lnl*_*nlB 0 compilation ada gprbuild
我有一个项目,其中包含几个具有相同名称但在不同文件夹中的文件.
例如:
->sources
->src
- a.c
- b.c
->stub
- a.c
- z.c
Run Code Online (Sandbox Code Playgroud)
在我的gprfile中,我包含了源代码
for Source_Dirs use ( "sources/**" )
Run Code Online (Sandbox Code Playgroud)
现在,我想通过使用原语"Excluded_Source_File"来忽略src中的文件.
不幸的是,这个原语需要一个文件名,而不是一个完整的路径,所以当我想忽略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
Run Code Online (Sandbox Code Playgroud)
有没有人知道我怎么能这样做,而不改变当前的文件夹架构和没有重命名文件?
听起来你想要的是一个项目扩展,即.创建第二个项目文件,扩展第一个.在这个秒项目文件中,您可以覆盖a.c
project Stubbed extends "my_project.gpr" is
for Source_Dirs use ("stub");
end Stubbed;
Run Code Online (Sandbox Code Playgroud)
您可以在GPRBuild用户指南中阅读有关项目扩展的更多信息
我会使用场景变量 ; 而且,听起来好像Excluded_Source_Dirs很有用.
type Source_T is ("normal", "stubbed");
Sources : Source_T := external ("SOURCES", "normal");
Run Code Online (Sandbox Code Playgroud)
那么
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;
Run Code Online (Sandbox Code Playgroud)
要么
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;
Run Code Online (Sandbox Code Playgroud)
在任一情况下,
gprbuild -P prj
Run Code Online (Sandbox Code Playgroud)
(你可以添加默认值-XSOURCES=normal)或
gprbuild -P prj -XSOURCES=stubbed
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |