I am reading a makefile for a Qt-created project that has the following:
{backend}.cpp{release\}.obj::
$(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<<
$<
<<
(above code is using \t for recipe and is as written in makefile)
Both the rule and the recipe confuse me.
I'll start with {backend}
in the rule. Obviously the same confusion for {release}
as well. I assume this is a reference to a particular sub-directory named backend
. I guess that ..\backend\release\bar.obj
would be found as a legitimate target? But what part of make says this is legitimate syntax and what exactly happens here?
FWIW: This is in a section commented as: ##### implicit rules
.
Version: GNU Make 4.2.1 Built for x86_64-unknown-cygwin
Bonus points:
Explain the use of @<<
and <<
in the recipe... (Yes, I'm lacking in bash shell finesse...). Is this referencing the first prerequisite with $<
and silently redirecting it? Why isn't it $$<
?
Thanks.