ada - 可以将 gprbuild 配置为输出 gnatprep 预处理源吗?
问题描述
我有一个 gpr 项目,它使用 gnatprep 预处理源文件。但是现在我有一个需要已经预处理的源文件的工具。我知道我可以搜索每个源文件并通过 gnatprep 运行它:
find . -type f -iname '*.ad[sb]' -exec gnatprep -DSymbol=value {} {}.prep \;
但我想利用项目文件来找到正确的源文件并传递它们。我的项目文件还定义了要使用的各种符号值,我必须将它们添加到上面的命令中。是否可以通过 .gpr 文件中的某些参数?例如
for Object_Dir use 'obj';
for Preprocessed_Sources_Dir use 'wow_that_was_easy';
解决方案
您可以告诉编译器将预处理的源代码保留在项目文件中Object_Dir
的-gnateG
选项中,如下所示:
package Compiler is
for Default_Switches ("Ada") use ("-gnateDFoo=""Bar""", "-gnateG" );
end Compiler;
然后将预处理的源命名为<original_filename>.prep
,例如foo.adb
->foo.adb.prep
编辑:
对于您的后续问题,您必须将预处理器选项放在单独的文件中,例如prep.def
:
* -u -c -DFoo="Bar"
或者,如果您想为每个文件指定选项:
"foo.adb" -u -c -DFoo="Bar"
然后告诉编译器使用该文件的gnatep=
选项:
package Compiler is
for Default_Switches ("Ada") use ("-gnateG", "-gnatep=" & Foo'Project_Dir & "prep.def" );
end Compiler;
推荐阅读
- java - 如何让我的费率值正确显示?
- javascript - 如何在选择标签中禁用自动填充
- asp.net - 使用外部js文件时获取401状态码
- r - 如何创建频率堆叠条形图,但是在 R 中,条形图上有百分比标签,y 轴上有频率?
- python - 如果 Col B 不为空,则替换 Col A 中的观察值,Python
- r - Dplyr:mutate函数两边的字符串
- javascript - ng-packagr 扩展汇总配置
- java - 如何在 android 中检查 URL 的可用性
- reactjs - 反应useState钩子的setState成功更新状态,但不重新渲染组件
- azure - 在 Azure B2C 中自动创建组和成员资格