Ada 是否将gprbuild默认为并行生成?

Ada 是否将gprbuild默认为并行生成?,ada,Ada,如何使gprbuild默认为并行构建?现在已经不是1990年了,我有所有这些备用内核,不想继续在命令行中添加-j0 根据我对文件的理解,这应该是可行的: package Builder is for Default_Switches("Builder") use ("-j0"); end Builder; ……但事实并非如此;它只是被忽略了。我在互联网上看到有人提到,Default\u Switches(“Ada”)应该可以工作,但所做的只是将--jobs选项传递给GNAT,这当然是错

如何使gprbuild默认为并行构建?现在已经不是1990年了,我有所有这些备用内核,不想继续在命令行中添加
-j0

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

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

……但事实并非如此;它只是被忽略了。我在互联网上看到有人提到,
Default\u Switches(“Ada”)
应该可以工作,但所做的只是将
--jobs
选项传递给GNAT,这当然是错误的。

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

然而,报告建议您可以使用“聚合项目”获得想要的效果。我将我的一个项目文件打包在一个聚合中,如下所示:

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英寸MacBookPro的plain项目的开发时间是

   70.17 real        66.33 user         2.85 sys
对于聚合项目构建

   35.46 real       119.05 user         4.80 sys
(我不知道“用户”值是什么意思!但我检查了“真实”值,它们与我的手表匹配。)

我已经向AdaCore报告了上面GPRBuild文档链接上的错误(上面说交换机(其他),应该是
其他

更新:根据David的合理投诉,凭直觉,我在我的普通项目中尝试了这个
packagebuilder
技巧,效果很好。我仍然不知道这在源头上发生了什么


有关信息,undocumented switch
-dm
报告同时编译的最大数量(在
gnatmake
gprbuild
中)。

垃圾桶,谢谢。令人惊讶的是,使用4个内核完成这项工作所需的CPU总时间是仅使用一个内核所需时间的两倍。通信/缓存未命中/等待磁盘,我想。谢谢(尽管使用聚合项目只是传递参数真的很难看)。奇怪的是,这里没有内部选项。:blush:(尽管考虑到缺乏文档,我并不觉得太糟糕)。请看更新后的答案,了解好消息。是的,效果很好。非常感谢!现在,如果
-p
也在那里工作的话。。。