help-make
[Top][All Lists]
Advanced

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

Re: Need some information related setting make variables during run-time


From: Paul Smith
Subject: Re: Need some information related setting make variables during run-time depending on the target
Date: Wed, 28 Jul 2010 11:35:04 -0400

On Wed, 2010-07-28 at 20:46 +0530, Sandeep K S wrote:
> I have two targets A and B. For Target A, I need to set a variable
> FLAG as '-DFLAG_A', and for target B, I need to set the variable FLAG
> as '-DFLAG_B'. This FLAG variable is used in the compilation which
> declares two macros (FLAG_A and FLAG_B) for the C file to use.

Look up "target-specific variables" in the GNU make manual.

> I tried the following two options, but was not able to successfully
> set the FLAG variable depending on the target.
> ifeq ($@, "A")   
> FLAG=-DFLAG_A
> else
> FLAG=-DFLAG_B
> endif

This will not work because ifeq, etc. are parsed when the makefile is
read in, but $@ is only set in the context of a rule, when make is
actually invoking it.  So here, $@ evaluates to the empty string.  See
"How make Reads a Makefile" in the GNU make manual.

> A: x.o y.o z.o $FLAG
> B: x.o y.o g.o $FLAG

These are both wrong: first you mean $(FLAG), not $FLAG, and second this
would add a prerequisite file named "-DFLAG_B" to your target A, which
is obviously not what you want.

> A: x.o y.o z.o $FLAG
>     FLAG=-DFLAG_A
> 
> B: x.o y.o g.o $FLAG
>     FLAG=-DFLAG_B

No.  Too many things wrong to get into here :-)

See the manual.

-- 
-------------------------------------------------------------------------------
 Paul D. Smith <address@hidden>          Find some GNU make tips at:
 http://www.gnu.org                      http://make.mad-scientist.net
 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist




reply via email to

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