[cmake-developers] How to set environment variable for custom command.
Alan W. Irwin
irwin at beluga.phys.uvic.ca
Fri Jul 19 14:29:26 EDT 2013
On 2013-07-19 12:35-0400 Matthew Woehlke wrote:
> On 2013-07-19 10:36, Nicolas Desprès wrote:
>> In Unix shell we can do that:
>> $ VAR=foo cmd in out
>>
>> This way the environment variable is only set in the environment of the
>> process of the command and not the in current shell like when using the
>> "export" built-in.
>>
>> I would like to be able to do the same for a custom command in CMake.
>> Ideally I was looking for something like that:
>>
>> add_custom_command(
>> OUTPUT out
>> COMMAND cmd in out
>> DEPENDS in
>> ENVIRONMENT VAR foo
>> )
>>
>> Any idea?
>
> Well, if you only care about UNIX you can always use /bin/env :-).
Actually, using env is not that platform-limiting since it is
available with MSYS. For those not aware of the env capabilities a
simple example (setting the PATH in various ways to run different
cmake varsions) is
COMMAND ${ENV_EXECUTABLE} PATH=<whatever> ${CMAKE_COMMAND} --version
where ENV_EXECUTABLE is the result of "find_program(ENV_EXECUTABLE
env)". Also note that env can be used to set multiple environment
variables for a particular command.
I use env a lot for the custom commands in the build_projects project.
I have found it works fine (with some care) for a number of different
generators/platforms, e.g., "Unix Makefiles" on Linux, "Ninja" (both
on Linux and for MinGW/MSYS/Windows), "MSYS Makefiles", "MinGW
Makefiles", and "NMake Makefiles Jom".
Alan
__________________________
Alan W. Irwin
Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).
Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________
Linux-powered Science
__________________________
More information about the cmake-developers
mailing list