在Visual Studio 2003中,我尝试在预构建事件中设置一个环境变量,然后在编译步骤中使用该变量,但该值似乎不会传播.例如,如果预构建事件包含此内容(直接或在批处理文件中):
set MY_LIB_VERSION=1.0.0
Run Code Online (Sandbox Code Playgroud)
和AdditionalIncludeDirectories有这个:
c:\path\to\library\my_lib_v$(MY_LIB_VERSION)\include
Run Code Online (Sandbox Code Playgroud)
如果my_lib_v1.0.0目录存在,我希望编译工作.但相反,我得到了
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)
我推断在预构建事件中设置的环境变量因此没有传播到编译步骤,但我可能会遗漏一些东西.
如何在预构建事件中设置环境变量并在编译步骤中使用它?
(或者,任何其他明智的方法来定义一个库版本并为AdditionalIncludeDirectories和AdditionalLibraryDirectories多次使用它也会这样做.)
更新:我最终以不同的方式解决了我们的问题.我们正在使用Subversion,并svn:externals在被调用的项目源的子目录上设置该属性dependencies,这样项目的签出将另外检出<svn_path>\libraries\my_lib_v1.0.0并dependencies\my_lib在工作副本中调用它.然后项目设置可以参考dependencies\my_lib\include等.升级到版本1.0.1 my_lib只是编辑svn:externals属性的问题 - 代码和项目设置不需要更改.
windows visual-studio-2003 compilation environment-variables visual-studio