makefile可以让一个目标有多个单词吗?

时间:2017-01-15 12:19:28

标签: makefile

我想用.. 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位?

这个多字目标方法有效吗?

如果我使用参数会出现问题吗?

我能否有一个简单的例子,请正确使用这种方法(如果有这样的话)?

2 个答案:

答案 0 :(得分:3)

关于规则语法the GNU make manual的主题是:

  

目标是文件名,用空格分隔。

因此,在您的示例中,make会看到两个目标,gitpull。在使用目标中的空格之前有a question。然而,答案似乎很笨拙(或者从评论中看起来似乎不起作用)。

通常,GNU make不会很好地处理文件名中的空格(因此也不会处理目标/先决条件)。 This question(6年前!)引用了a bug关于它,它似乎仍然是开放的。

我的建议,就像@uzsolt在评论中指出的那样,放下了空间!

答案 1 :(得分:2)

正如@sycko指出的那样,make会看到两个目标gitpull,它们是由您提供的操作共同创建的(此行为偶尔会有用)。

似乎值得指出的是,当您键入make git pull时,它有时会起作用的原因是make将该调用解释为它使两者 gitpull目标(这也是偶尔有用的)。因此make pull git可能具有相同的效果。也就是说,它只是偶然发挥作用。

我不完全确定为什么这有时会失败;但是混淆make的依赖逻辑并不是很难,而且我对这种不可预测的构造表现并不特别感到惊讶。