在makefile的配方中,前导“@”是什么?

时间:2012-01-03 06:07:45

标签: ubuntu makefile gnu-make recipe

在eclipse生成的makefile中,我看到以下规则:

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

配方行开头“ @ ”的目的是什么?

阅读GNU Make用户手册我找不到对@的这种用法的引用。然后我假设它实际上是按原样转移到shell。

因此,阅读BASH手册,我可以与此用法相关的唯一地方是在设置extglob选项时进行命令替换。但是,在命令行中尝试此操作会给我一个错误。

2 个答案:

答案 0 :(得分:4)

@前缀导致make以静默方式运行命令。请参阅this section of the GNU make manual

答案 1 :(得分:2)

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