On 11. Feb, 2010, at 9:07 , Arjen Markus wrote: > > > On 2010-02-11 01:20, David Cole wrote: >> On Wed, Feb 10, 2010 at 7:16 PM, Alan W. Irwin > >> Would setting that environment variable from cmake affect subsequent >> Windows >> builds? I don't have any Windows development experience, but this >> question >> just came up on the PLplot list. There, we all speculated from our >> various >> Linux and Windows platform perspectives that SET(ENV{PATH} ...) just >> sets >> the PATH when you are running cmake and would have no effect on the >> environment for the subsequent build. Thus, we thought you would >> have to >> externally set the PATH before running the build. But we all could >> be wrong >> which is why I have asked this question. :-) >> Alan, >> You are correct. Doing this... >> SET(ENV{xxx} "value") >> ...in a CMakeLists.txt file only sets an environment variable for the >> duration of the cmake run. It has no influence on downstream build steps. > > The story with environment variables on Windows is slightly more > complicated than that: > - On Linux/UNIX you can set environment variables for the duration of > a shell process via the set (setenv) command and by putting such > commands in a shell script and using . (or source) to run the > script in the same shell. This does not happen if you run the > shell script normally (as it is run in a separate process then). > > - On Windows (or DOS if you want to include some history) there is > no separate "source" command. Instead if you set an environment > variable in a batch file and run that batch file in a DOS-box, > it will keep that value even after the batch file has finished - > the batch file is run in the same process (an exit statement in > such a batch file exits the DOS-box!). If you run a separate > program, changes to the environment will be lost, just as under > Linux. > > For building PLplot under Windows I extend the path first (so that > includes the directory where the DLLs will be found) and then > run the various commands (CMake and make and the examples). But > that has become an "automatism". > > What you could do is wrap the CMake command in a batch file, > including the command "set path=..." and run that instead. > > The drawback is that the path will be expanded each time > you run it. > > Regards, > > Arjen
You might want to take a look at setlocal/endlocal: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true Michael _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake