在 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):致命错误 C1083:无法打开包含文件:'my_lib.h' 项目:警告 PRJ0018:未找到以下环境变量: $(MY_LIB_VERSION)
我推断在预构建事件中设置的环境变量因此不会传播到编译步骤,但我可能会遗漏一些东西。
如何在预构建事件中设置环境变量并在编译步骤中使用它?
(或者,定义一个库版本一次并将其多次用于 AdditionalIncludeDirectories 和 AdditionalLibraryDirectories 的任何其他合理方法也可以。)
更新:我最终以不同的方式解决了我们的问题。svn:externals
我们正在使用 Subversion,并在名为 的项目源的子目录中设置属性dependencies
,这样项目的检出将另外检出并在工作副本中<svn_path>\libraries\my_lib_v1.0.0
调用它。dependencies\my_lib
然后项目设置可以参考之dependencies\my_lib\include
类的。升级到 1.0.1 版my_lib
只需编辑svn:externals
属性即可——无需更改代码和项目设置。