我想要一个虚假的目标来“重新制作”一个项目,make again
而不是通过键入make clean && make
或make clean all
(这似乎我想“全部清理”)或制作别名/函数/脚本来执行此操作。
指定这样的东西是否安全:
again: clean all
Run Code Online (Sandbox Code Playgroud)
从某种意义上说,先决条件从左到右可靠地更新?或者,也许,最好像这样进行递归调用
again: clean all
Run Code Online (Sandbox Code Playgroud)
我的意思是,这两种方法是否存在任何缺陷或不兼容之处,可能会使创建例如 shell 函数或别名make clean && make
更安全?
谢谢你。
指定这样的东西是否安全:
Run Code Online (Sandbox Code Playgroud)again: clean all
从某种意义上说,先决条件从左到右可靠地更新?
这是不安全的,因为all
不依赖于clean
所以如果有人运行make -j2 again
那么两个目标可以并行运行。
你的第二种方法会更好,因为它确保$(MAKE) all
在$(MAKE) clean
完成之前无法启动。但这并不完全安全,因为如果有人这样做,make -j2 clean again
那么这两个目标可以并行运行,这大致相当于make clean & make clean all
,这仍然允许该all
步骤与第一个clean
.
更好的选择是:
again: clean
$(MAKE) all
Run Code Online (Sandbox Code Playgroud)
这样,如果有人这样做,make clean again
那么它只执行一次清理,如果他们这样做make -j2 clean again
,仍然可以确保clean
目标在$(MAKE) all
运行之前完成。
归档时间: |
|
查看次数: |
844 次 |
最近记录: |