在Visual Studio 2003中,我试图在预构建事件中设置一个环境变量,然后在编译步骤中使用它,但是该值似乎没有被传播。例如,如果预构建事件包含以下内容(直接或在批处理文件中):
set MY_LIB_VERSION=1.0.0
而 AdditionalIncludeDirectories 具有以下内容:
c:\path\to\library\my_lib_v$(MY_LIB_VERSION)\include
如果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,并在名为
dependencies
的项目源子目录上设置了svn:externals
属性,以便对项目的检出将额外检出<svn_path>\libraries\my_lib_v1.0.0
并将其称为工作副本中的dependencies\my_lib
。然后,项目设置可以引用dependencies\my_lib\include
等内容。升级到my_lib
的1.0.1版本只需要编辑svn:externals
属性即可--代码和项目设置不需要更改。
SETX
的命令可以持久地存储环境变量。来源:http://ss64.com/nt/setx.html - bassim