使gprbuild默认为并行构建?

Dav*_*ven 2 ada

如何使gprbuild默认执行并行构建?它不再是1990年了,拥有所有这些备用内核,并且不想继续添加-j0到命令行.

根据我对文档的理解,这应该有效:

package Builder is
    for Default_Switches("Builder") use ("-j0");
end Builder;
Run Code Online (Sandbox Code Playgroud)

......但它没有; 它被忽略了.我已经看到了Default_Switches("Ada")应该起作用的互联网的提及,但所有这一切都是将--jobs选项传递给GNAT,这当然是错误的.

Sim*_*ght 5

我没有看到任何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;
Run Code Online (Sandbox Code Playgroud)

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

   70.17 real        66.33 user         2.85 sys
Run Code Online (Sandbox Code Playgroud)

以及聚合项目构建

   35.46 real       119.05 user         4.80 sys
Run Code Online (Sandbox Code Playgroud)

(我不知道"用户"的含义是什么意思!但我检查了"真实"的值,它们与我的手表相匹配.)

我已经在上面的GPRBuild文档链接(它说for Switches (other)应该是others)上报告了AdaCore的错误.

更新:遵循大卫的合理投诉,并且在预感中,我package Builder在我的普通项目中尝试了这个技巧并且它起作用了.我仍然没有看到源头发生了什么.

对于信息,未记录的开关-dm报告同时汇编的最大数目(在gnatmakegprbuild).