gpt4 book ai didi

makefile - 使用 ‘make again’ 清理和重制

转载 作者:行者123 更新时间:2023-12-05 02:21:45 25 4
gpt4 key购买 nike

我想通过 make again 来“重新制作”一个项目,而不是输入 make clean && makemake clean all >(这似乎是我想“全部清除”)或创建一个别名/函数/脚本来执行此操作。

这样指定是否安全:

again: clean all

从某种意义上说,先决条件是从左到右可靠地更新的吗?或者,也许,像这样进行递归调用会更好吗

again:
$(MAKE) clean # maybe ‘&& \’ here
$(MAKE) all

我的意思是,这两种方法中是否存在任何缺陷或不兼容,这可能会使创建例如make clean && make 更安全的 shell 函数或别名?

谢谢。

最佳答案

Is it safe to specify something like this:

again: clean all

in a sense that prerequisites are reliably updated from left to right?

这不安全,因为 all 不依赖于 clean 所以如果有人再次运行 make -j2 那么这两个目标就可以运行并行。

您的第二种方法会更好,因为它确保 $(MAKE) all 不会在 $(MAKE) clean 完成之前开始。但这并不完全安全,因为如果有人再次执行make -j2 clean,那么那些两个目标可以并行运行,这大致等同于make clean & make clean all,这仍然允许 all 步骤与第一个 clean 并行运行。

更好的选择是:

again: clean
$(MAKE) all

这样,如果有人执行make clean again,那么它只会执行一次clean,如果他们执行make -j2 clean again,它仍然确保 clean 目标在 $(MAKE) all 运行之前完成。

关于makefile - 使用 ‘make again’ 清理和重制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32186029/

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