mike (06/08/82)
Thanks to all who responded to my query about a makefile problem.
The problem was, we wanted to write a general rule for updating
commands, but we didn't have a way to specify that a command
depended on its own object file. Here is one of many responses:
From alice!npois!harpo!fortune!stein Tue Jun 8 07:21:35 1982*
Subject: makefile trick
Your problem is solved by a new dependency parameter included in
the system-III version of make. $$@ is defined to refer to the current
`thing' to the left of the colon (which is $@). Your makefile becomes:
COMMANDS = X Y Z
OBJECTS = a.o b.o c.o
LIBRARIES= lib1 lib2
$(COMMANDS) : $$@.o $(OBJECTS) $(LIBRARIES)
cc -o $@ $@.o $(OBJECTS) $(LIBRARIES)
The dependencies implicitly defined above are:
X : X.o $(OBJECTS) $(LIBRARIES)
Y : Y.o $(OBJECTS) $(LIBRARIES)
Z : Z.o $(OBJECTS) $(LIBRARIES)
The built-in rules .x.o should take care of the .o dependencies.
If you don't have access to the system-III make, your best bet is
probably the following:
COMMANDS = X Y Z
OBJECTS = a.o b.o c.o
LIBRARIES= lib1 lib2
$(COMMANDS) : $(OBJECTS) $(LIBRARIES)
cc -o $@ $@.o $(OBJECTS) $(LIBRARIES)
X : X.o
Y : Y.o
Z : Z.o
A little bulkier, but it will work.
Hope this helps.
Mark Stein
harpo!fortune!stein
(M. J. Hawley rabbit!mike)