make(1) questions

Conor P. Cahill cpcahil at virtech.uucp
Tue Feb 26 14:02:48 AEST 1991


pefv700 at perv.pe.utexas.edu writes:
>I have 2 executables that are "made" using the same sources files.  The only
>difference is that for one a cpp(1) macro is defined, for the other it is not.

The easiest way to do this is to create a new rule:

.c.p:
	if [ -s $*.o ]; then \
		mv $*.o sv.$*.o; \
	fi
	$(CC) -c $(CFLAGS) $(SPECIAL_CPP_FLAG) $<
	mv $*.o $*.p
	if [ -s sv.$*.o ]; then \
		mv sv.$*.o $*.o; \
	fi

and have the program that needs the define depend upon objects with a .p
extension.  if they are all the same sources you could do the following:

SRCS=name1.c name2.c ...

PGM1OBJS=$(SRCS:.c=.o)
PGM2OBJS=$(SRCS:.c=.p)

pgm1: $(PGM1OBJS)
	cc -o $@ $(PGM1OBJS)

pgm2: $(PGM2OBJS)
	cc -o $@ $(PGM2OBJS)

>Lastly, my home directory has a $ in it (thanks to an NFS mount to a VAX :-().
>I would like to do something like:

>$(PROG): object files...
>	cc -o $(PROG) options... object files... libs...

put single quotes around the $(PROG).  For example:

 	cc -o '$(PROG)' options... object files... libs...

Note that you should only do this for shell command lines.  Makefile
directives may get confused.

-- 
Conor P. Cahill            (703)430-9247        Virtual Technologies, Inc.
uunet!virtech!cpcahil                           46030 Manekin Plaza, Suite 160
                                                Sterling, VA 22170 



More information about the Comp.unix.shell mailing list