那么,在
Windows环境变量中嵌套的环境有多大限制?我做了很多开发工作,我试图设置我的开发环境vars,并且很多它们彼此嵌套,即.
GLEW=%THIRD_PARTY_ROOT%\GLEW GLEW_1_5_5=%GLEW%\glew-1.5.5 GLEW_BIN_PATH=%GLEW_ROOT%\bin GLEW_INCLUDE_PATH=%GLEW_ROOT%\include GLEW_LIB_PATH=%GLEW_ROOT%\lib GLEW_ROOT=%GLEW_1_5_5% OSG=%THIRD_PARTY_ROOT%\OpenSceneGraph OSG_2_8_3=%OSG%\OpenSceneGraph-2.8.3 OSG_BIN_PATH=%OSG_ROOT%\bin OSG_INCLUDE_PATH=%OSG_ROOT%\include OSG_LIB_PATH=%OSG_ROOT%\lib OSG_ROOT=%OSG_2_8_3% THIRD_PARTY_ROOT=C:\dev\third-party
但是我有一个时间让他们真正地扩张.有一段时间,当我看着set的输出,我只是看到他们正在被扩展的顺序,所以依赖于foo_ROOT的任何人都没有被正确扩展.我尝试启用延迟扩展,这没有帮助,但重新启动似乎…所以可能延迟扩展需要重新启动..
无论哪种方式,我的PATH变量中都有GLEW_BIN_PATH和OSG_BIN_PATH,它们拒绝展开.这真的很令人沮丧,因为dll是在那里居住,当然我可以得到evvvvery其他东西扩大…任何想法?
编辑:我将它们放在PATH变量中:
[everything else....];%GLEW_BIN_PATH%;%OSG_BIN_PATH%
所以我没有明显的原因让他们不再扩大.
看起来像变量定义上有一个词典依赖关系.
Windows以词典顺序扩展并填充环境变量(:-O)
您只能使用变量,“字典”的变量低于您的变量.
例:
以下定义:
VAR_01=1 VAR_02=%VAR_01%-2 VAR_03=%VAR_02%-3
产生
VAR_01 is 1 VAR_02 is 1-2 VAR_03 is 1-2-3
但
VAR_01=1 VAR_02=%VAR_03%-2 VAR_03=%VAR_01%-3
产生
VAR_01 is 1 VAR_02 is -2 VAR_03 is 1-3
扩充VAR_02时,VAR_03未定义.