gpt4 book ai didi

ada - 让 gprbuild 默认为并行构建?

转载 作者:行者123 更新时间:2023-12-04 03:04:24 26 4
gpt4 key购买 nike

如何让 gprbuild 默认执行并行构建?现在已经不是 1990 年了,我有所有这些备用内核,不想一直在命令行上添加 -j0

根据我对文档的理解,这应该可行:

package Builder is
for Default_Switches("Builder") use ("-j0");
end Builder;

...但事实并非如此;它只是被忽略了。我在网上看到提到 Default_Switches("Ada") 应该可以工作,但所做的只是将 --jobs 选项传递给 GNAT,这当然是错了。

最佳答案

除了 -j 之外,我没有在 gprbuild 的源代码中看到任何可以控制作业数量的地方。

然而,documentation建议您使用“聚合项目”获得想要的效果。我将我的一个项目文件打包成一个聚合体,如下所示:

aggregate project Gnat_Util_Aggregate is
for Project_Files use ("gnat_util.gpr");
package Builder is
for Switches (others) use ("-j0");
end Builder;
end Gnat_Util_Aggregate;

在这台 13 英寸 Macbook Pro 上构建普通项目的时间是

   70.17 real        66.33 user         2.85 sys

并用于聚合项目构建

   35.46 real       119.05 user         4.80 sys

(我不知道“用户”值是什么意思!但我检查了“真实”值,它们与我的 watch 匹配。)

我已经在上面的 GPRBuild 文档链接上报告了错误(它说 for Switches (other), should be others)到 AdaCore。

更新:在 David 合理的提示之后,凭直觉,我在我的普通项目中尝试了这个package Builder 技巧并且成功了。我仍然没有在源代码中看到这种情况发生的位置。

有关信息,未记录的开关 -dm 报告同时编译的最大数量(在 gnatmakegprbuild 中)。

关于ada - 让 gprbuild 默认为并行构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23717035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com