gpt4 book ai didi

makefile - 有没有办法使(递归) make -j 调用深度优先?

转载 作者:行者123 更新时间:2023-12-02 22:14:27 24 4
gpt4 key购买 nike

我有一个“典型”的递归 Makefile 构建一系列库(每个库有数百个 cpp 文件),以及一台 8 核机器。

现在,当我运行 make -j N 时,我看到 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 + ninja...)

最佳答案

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

没有。不包括 2018 年 GNU make 4.2.1。

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

关于makefile - 有没有办法使(递归) make -j 调用深度优先?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31159082/

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