A macro assignment of the form
cmd_macro:sh = command
assigns the standard output of the indicated command to cmd_macro; for instance:
COMMAND:sh = cat Listfile $(COMMAND): $$(@:=.c)
is equivalent to the previous example. However, with the assignment form, the command is only performed once per make run. Again, only the standard output is used, NEWLINE characters are converted to SPACE characters, and a non-zero exit status halts make with an error.
Alternate forms of command-replacement macro assignments are:
macro:sh += command
Append command output to the value of macro.
target := macro:sh = command
Conditionally define macro to be the output of command when processing target and its dependencies.
target := macro:sh += command
Conditionally append the output of command to the value of macro when processing target and its dependencies.