Makefile中的这些行是什么意思?

时间:2019-07-09 13:13:37

标签: bash makefile

我不得不快速查看Makefile,以了解我遇到的一些问题。我碰到过这些问题,我想确保我在这里正确理解了它们的用法。

//Array Declaration
const phones = [{ brand: "Samsung", id: 10 }, { brand: "Apple", id: 20 }];

//correct way
let phone = phones.find(phone => phone.id === 10);
console.log("Correct result: ", phone);

//wrong way
phone = phones.find(phone => {
  phone.id === 10;
});
console.log("Wrong result: ", phone);

要清楚,我知道cp $< $@ sed -i -e 's#{{DEPLOY}}#https://example.com/#g' $@ 在这里被用来做(全局?)字符串替换,但是bash特殊字符的使用使这可能比应该的更加混乱。

希望您能对上面两行的实际操作进行解释。

1 个答案:

答案 0 :(得分:2)

它们是GNU Make automatic variables

  

$@   规则目标的文件名。如果目标是存档成员,则“ $ @”是存档文件的名称。在具有多个目标的特征码规则中(请参阅特征码规则简介),“ $ @”是导致运行规则配方的任何目标的名称。

     

$<第一个必备条件的名称。如果目标从隐式规则中获取配方,这将是隐式规则添加的第一个先决条件(请参阅隐式规则)。

请参见what targets and prerequisites are


sed -i -e 's#{{DEPLOY}}#https://example.com/#g' $@

{{DEPLOY}}中所有出现的https://example.com/替换为$@


放在一起,是一个更简单,更强大的版本

cp $< $@
sed -i -e 's#{{DEPLOY}}#https://example.com/#g' $@

是:

sed -e 's#{{DEPLOY}}#https://example.com/#g' $< > $@