我想用.. make git pull
运行我的make任务.PHONY: What do I put here? git pull ping suggests 3 targets right?
git pull:
~/ansible-ctrl/scripts/04-pull-git-latest.sh
ping:
~/ansible-ctrl/scripts/06-ping-ansible.sh
让git pull ..有时候工作,看起来有点受伤。
我把什么放在.PHONY位?
这个多字目标方法有效吗?
如果我使用参数会出现问题吗?
我能否有一个简单的例子,请正确使用这种方法(如果有这样的话)?
答案 0 :(得分:3)
关于规则语法the GNU make manual的主题是:
目标是文件名,用空格分隔。
因此,在您的示例中,make会看到两个目标,git
和pull
。在使用目标中的空格之前有a question。然而,答案似乎很笨拙(或者从评论中看起来似乎不起作用)。
通常,GNU make不会很好地处理文件名中的空格(因此也不会处理目标/先决条件)。 This question(6年前!)引用了a bug关于它,它似乎仍然是开放的。
我的建议,就像@uzsolt在评论中指出的那样,放下了空间!
答案 1 :(得分:2)
正如@sycko指出的那样,make会看到两个目标git
和pull
,它们是由您提供的操作共同创建的(此行为偶尔会有用)。
似乎值得指出的是,当您键入make git pull
时,它有时会起作用的原因是make
将该调用解释为它使两者 git
和pull
目标(这也是偶尔有用的)。因此make pull git
可能具有相同的效果。也就是说,它只是偶然发挥作用。
我不完全确定为什么这有时会失败;但是混淆make的依赖逻辑并不是很难,而且我对这种不可预测的构造表现并不特别感到惊讶。