2012-01-03 45 views
2

在生成文件的食谱,我看到了以下规则:什么是领先的“@”在由日食产生的一个makefile

./Cores/$(TARGET).core.3.srec : ../$(TARGET).core.3/Debug/$(TARGET).core.3.elf 
     @mkdir -p ./Cores/ 
     @e-objcopy --srec-forceS3 --output-target srec "$<" "[email protected]".temp 
     @echo Creating srec file for CoreID\<0x826\> 
     @head --lines=1 "[email protected]".temp | sed 's/0000/0826/' > "[email protected]" 
     @tail --lines=+2 "[email protected]".temp >> "[email protected]" 

什么是“@”的宗旨,在食谱线的开始?

通读GNU Make用户手册我找不到@的这种用法。然后我假设它实际上是按照原样传递给shell的。

因此,阅读BASH手册时,我可能涉及此用途的唯一地方是在设置extglob选项时进行命令替换。但是,在命令行中尝试这样做给了我一个错误。

回答

4

@前缀会导致make以无提示方式运行该命令。见this section of the GNU make manual

+0

谢谢!那么,它是一个make命令还是一个shell命令(修饰符/指令)? – ysap 2012-01-03 06:46:18

+0

@@%$#! - 我知道我错过了...感谢指针。 – ysap 2012-01-03 06:49:52

+0

这是一个GNU make功能。 – 2012-01-03 06:50:22

2

运行配方时,@抑制回显命令,请参阅https://stackoverflow.com/a/867093/60462

+0

谢谢!那么,它是一个make命令还是一个shell命令(修饰符/指令)? – ysap 2012-01-03 06:45:16

+1

它是单独的'make'语法。还是'@ ls'曾经给你一个目录列表? – Jens 2015-08-30 17:51:32