In Visual Studio 2003, I am trying to set an environment variable in the pre-build event that will then be used in the compilation step, but the value doesn't seem to be propagated. For example, if the pre-build event contains this (either directly or within a batch file):
set MY_LIB_VERSION=1.0.0
and AdditionalIncludeDirectories has this:
c:\path\to\library\my_lib_v$(MY_LIB_VERSION)\include
then I would expect the compilation to work if the my_lib_v1.0.0
directory exists. But instead, I get
c:\path\to\prog\my_prog.c(22) : fatal error C1083: Cannot open include file: 'my_lib.h' Project : warning PRJ0018 : The following environment variables were not found: $(MY_LIB_VERSION)
I deduce that the environment variable set in the pre-build event therefore isn't being propagated to the compilation step, but I may be missing something.
How can I set the environment variable in the pre-build event and use it in the compilation step?
(Alternatively, any other sensible ways of defining a library version once and using it several times for AdditionalIncludeDirectories and AdditionalLibraryDirectories would do just as well.)
Update: I ended up solving our problem in a different way. We are using Subversion, and set up the svn:externals
property on a subdirectory of the project source called dependencies
, such that a checkout of the project would additionally check out <svn_path>\libraries\my_lib_v1.0.0
and call it dependencies\my_lib
in the working copy. Then the project settings could refer to dependencies\my_lib\include
and suchlike. Upgrading to version 1.0.1 of my_lib
is then simply a matter of editing the svn:externals
property -- the code and project settings did not need to change.
You might want to investigate this tool: http://workspacewhiz.com/SolutionBuildEnvironmentReadme.html
We use it all the time to manage environment variables in our build environment.