加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

makefile – 有没有办法让(递归)make -j调用首先进入深度?

发布时间:2020-12-16 07:13:00 所属栏目:百科 来源:网络整理
导读:我有一个“典型的”递归Makefile构建一系列库(每个库有数百个cpp文件)和一个8核机器. 现在,当我运行make -j时,NI看到make(GNU Make 3.81,用于记录)以广度优先运行,立即启动~N递归调用(我可以从输出中看到它在属于不同库的并行文件中构建) ). 仅仅为了实验,我
我有一个“典型的”递归Makefile构建一系列库(每个库有数百个cpp文件)和一个8核机器.

现在,当我运行make -j时,NI看到make(GNU Make 3.81,用于记录)以广度优先运行,立即启动~N递归调用(我可以从输出中看到它在属于不同库的并行文件中构建) ).

仅仅为了实验,我试图通过做一个深度优先的手动步骤

for i in list-of-subdirs-topologically-sorted; do 
    pushd "$i" && make -j N && popd
done

令我惊讶的是,从冷藏缓存的构建时间开始,这几乎缩短了一分钟.我猜有更好的CPU缓存使用率(以及磁盘使用率),也许是因为在库中你会发现包含很多次的相同包含,或者诸如此类…

那么,有没有切换到实际上让make在深度优先操作?

(是的,路线图将来会转换为CMake忍者……)

解决方法

So,is there a switch to actually get make to operate in depth-first?

不是.与2018年的GNU make 4.2.1不同.

我也倾向于认为深度优先搜索是一个适用于使用单个光标搜索树状数据结构的概念.使用N个游标并行进行深度优先搜索意味着什么?这个定义明确吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读