为何文件存在但无对应规则时make命令不报错?
Make行为疑问解答
- make的核心逻辑是保证目标处于最新状态,不是必须靠规则才能处理目标。
- 第一次执行
make foo时,foo文件不存在,也没有任何规则能生成它,所以make报错找不到目标的生成规则。 - 当你用
touch foo创建文件后,再次执行make foo,make会检查目标:此时foo已经存在,又没有定义任何依赖(因为没有对应规则),make判定这个目标已经是最新状态,不需要做任何操作,所以输出make: Nothing to be done for 'foo'.。 -r参数是禁用make的内置规则,但这个场景里根本没用到规则——目标文件已经现成存在,所以加不加-r结果完全一致。
内容的提问来源于stack exchange,提问作者Pollo
相关产品推荐
相关产品推荐

