那么,Windows 中环境变量的嵌套深度是否有限制呢?我做了很多开发工作,并且正在尝试设置我的开发环境变量,其中很多都是相互嵌套的,即。
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 驻留在那里,当然我可以得到任何其他东西来扩展......有什么想法吗?
编辑:我将它们放在 PATH 变量中:
[everything else....];%GLEW_BIN_PATH%;%OSG_BIN_PATH%
看起来变量定义存在字典顺序依赖性。
Windows 按字典顺序扩展并填充环境变量 (:-O)
您只能在您的变量上使用“字典顺序”低于您的变量的变量。
例子:
以下定义:
VAR_01=1
VAR_02=%VAR_01%-2
VAR_03=%VAR_02%-3
Produces
VAR_01 is 1
VAR_02 is 1-2
VAR_03 is 1-2-3
But
VAR_01=1
VAR_02=%VAR_03%-2
VAR_03=%VAR_01%-3
Produces
VAR_01 is 1
VAR_02 is -2
VAR_03 is 1-3
由于VAR_02扩展时未定义VAR_03。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)