@宏在makefile中有什么作用?

时间:2018-07-26 12:09:16

标签: makefile

Makefile的以下代码中,我可以问以下两个问题吗?

@宏有什么作用?

sed命令是否将\替换为//

.PHONY: prereqs
prereqs:
    (cd ../../data/ilsvrc12; make)
    @sed -i 's/\r//' run.py
    @chmod +x run.py

2 个答案:

答案 0 :(得分:2)

阅读documentation of GNU make。尤其是它的§5.2 Recipe Echoing

  

通常,make将在执行配方之前打印配方的每一行。我们之所以称呼它为回声,是因为它看起来像是您自己在键入线条。

     

当一行以“ @”开头时,该行的回显将被抑制。

但是请注意,@不是 宏。它是make怪异语法的一部分。

  

sed命令是否将\替换为//?

sed(1)手册页对此进行了介绍(但请考虑bash quoting上的规则)。因此,您的sed调用将删除\rsed解释为返回字符)的出现。

顺便说一句,您可能会发现尝试remake(与-x一起调试Makefile很有用。

答案 1 :(得分:2)

sed命令将特殊字符\r(回车)替换为空字符串...基本上将其删除。这似乎是一个穷人的dos2unix实现,它将DOS样式的CRNL行尾对转换为POSIX / UNIX样式的NL行尾字符。