Question

In a makefile that is generated by eclipse, I see the following rules:

./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 >> "$@"

What is the purpose of the "@" at the beginning of the recipe lines?

Reading through the GNU Make user's manual I could not find a reference to this use of @. I then assumed that it is actually transferred as-is to the shell.

So, reading the BASH manual, the only place I could relate to this use is in command substitution when the extglob option is set. However, trying this in the command line gave me an error.

Was it helpful?

Solution

The @ prefix causes make to run the command silently. See this section of the GNU make manual.

OTHER TIPS

The @ suppresses echoing the command when running the recipe, see https://stackoverflow.com/a/867093/60462.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top