help-make
[Top][All Lists]
Advanced

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

Re: Setting an environment variable while inside a target


From: Paul Smith
Subject: Re: Setting an environment variable while inside a target
Date: Thu, 19 Feb 2009 23:54:00 -0500

On Thu, 2009-02-19 at 19:42 -0800, pip9ball wrote:

> I'm looking for a way to export/set an environment variable while I'm inside
> a target.
> 
> test1: 
>         export CURRENT_TARGET = $@
>         @printenv | grep CURRENT_TARGET
> 
> Is this possible?

Each line of a recipe is invoked inside a different shell.  If you want
to set an environment variable inside the recipe, you have to put the
command on the same line.  For example:

test1:
        CURRENT_TARGET='$@' env | grep CURRENT_TARGET

Note that your syntax above is wrong in two ways: first, shell variable
assignments cannot have whitespace around the "=", and second the
"export VAR=VAL" form is not portable; since make always runs recipes
using /bin/sh you should use only portable shell constructs.

Another alternative for GNU make is to use its export keyword, like
this:

CURRENT_TARGET = $@
export CURRENT_TARGET
test1:
        env | grep CURRENT_TARGET

Because you are using "=" and not ":=", the variable won't be expanded
until the recipe is about to be run, by which time "$@" will be set
properly.

-- 
-------------------------------------------------------------------------------
 Paul D. Smith <address@hidden>          Find some GNU make tips at:
 http://www.gnu.org                      http://make.mad-scientist.us
 "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]