gnu make 3.81: secondary expansion

John Freeman <[email protected]>
Newsgroups gmane.comp.gnu.utils
Organization http://groups.google.com
Message-ID <76762354-9088-4b58-8293-17429ec18960@w34g2000prm.googlegroups.com>
Howdy,

I'm trying to build dependency files for the sources in my project.  I
got an initial version working using the tip from the GNU make manual:

%.dep : %.cpp
  ... commands ...

After I got this working, I wanted to make the dependency files
hidden:

DEPENDENCIES:=$(foreach file, $(OBJECTS), $(dir $(file)).$(basename $
(notdir $(file))).dep)

The interesting part of this variable assignment is the addition of
the dot (.) prefix to the file name.

Now, since my sources aren't hidden, I need to change the rule to
build the dependency files.  This was my failed attempt:

.SECONDEXPANSION:
%.dep : $$(patsubst %.dep,%.cpp,$$(subst /.,/,$$@))
  ... commands ...


Makefile:43: *** target pattern contains no `%'.  Stop.


I am using gmake 3.81 from macports on Mac OS 10.4.11.  All the online
solutions for this error I found said it usually has to do with colons
in the file name (on Windows machines).  I don't have that problem.
Printing $(DEPENDENCIES) proves this:

./.plan.dep pttl/.ast.dep pttl/.priority.dep pttl/.translater.dep pttl/
planners/quickplan/.mgraph.dep pttl/planners/quickplan/.print.dep

Also, the following rule works, indicating to me that this has to do
with secondary expansion in some way.

%.dep :
  @echo rule to build $@


Does anyone have any idea what may be causing the problem? Solutions?

Thank you,
John
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.