help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

multiple phony targets


From: Mehul Choube
Subject: multiple phony targets
Date: Tue, 3 Apr 2007 10:19:38 +0530

Hi,

 

Sorry for long mail.

 

I want to use a single makefile to build multiple applications. Following is a makefile written for client application:

 

/******* Makefile start *******/

 

# Clear out default suffixes and set our own.

.SUFFIXES:

.SUFFIXES: .o .c

 

# component build flags, used for naming output

debug : COMPFLAGS = D

release : COMPFLAGS =

 

TARGETNAME = c${COMPFLAGS}

 

# output directories

CPOUT = .

 

# CFLAGS

debug : OSCDBGFLAGS = -g

release : OSCDBGFLAGS =

 

OSCC = gcc

# command used to build the target

MAKETARGET = ${OSCC} ${OSCDBGFLAGS} \

        -o ${CPOUT}/${TARGETNAME} \

        ${OBJS}

 

# Fill in the source files for SRCS, OBJS will use macro substitution to

# replace .cpp extensions with a .o extension.

CSRCS         = client.c

 

# Build object names from source names.

COBJS=${CSRCS:%.c=%.o}

OBJS=${COBJS}

 

# targets

.PHONY : all

all : debug release

 

.PHONY : debug

.PHONY : release

debug release :

        OBJS="${OBJS}" \

        TARGETNAME="${TARGETNAME}" MAKETARGET="${MAKETARGET}" \

        MAKECOBJS="${OSCC} -c ${ OSCDBGFLAGS }" \

        $(MAKE) -f Make.mk

        @echo "$@ version built."

 

# cleanup

.PHONY : clean

clean :

        -rm -f ${CPOUT}/${TARGETNAME}

 

/******* Makefile end *******/

 

So ‘gmake debug’ builds debug versions and ‘gmake release’ builds release version.

Now I want to modify above makefile to build server application also. Only ‘CSRC’ and ‘TARGETNAME ’values are going to change in case of other applications.

 

I want to achieve following:

gmake client (should build both debug and release for client)

gmake client debug or gmake debug client (should build client debug versions)

gmake server (should build both debug and release for server)

gmake server debug or gmake debug server (should build server debug versions)

gmake client server (should build both debug and release for client and server)

gmake client server debug or gmake debug client server (should build debug versions for both client and server)

and different combinations…

 

I tried using ‘client debug’ phony target but then it builds client twice.

 

How to achieve above?

 

Any help is greatly appreciated.

 

Thanks,

Mehul

 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]