2013-03-16 94 views
1

gyp documentation记录了'variables'部分是这样的:gyp中变量的范围是什么?

“变量”:可以插入并在文件其他各个部分使用 的变量定义。

(强调我的)。 这似乎排除了使用包含的gyp文件中的变量,也排除了包含其他设置变量的gyp文件的可能性。

这是正确的吗?这些变量的范围是什么,以及如何在全局范围内设置变量? 我看到在Chromium中,01​​设置了很多变量,但Chromium也使用了与gyp不同的魔术gyp_chromium脚本。

回答

1

变量的范围是GYP与C++中局部变量的范围非常相似。假设您在variables字典FOO中定义变量。在FOO中定义的变量的范围是字典BAR,它是FOO的父亲。你可以在BAR之内的任何地方使用这些变量,并且不在其外。


你怎么设置全局变量?

了解所描述的规则很容易。将variables字典添加到gyp脚本的顶级字典中,并在其中定义一些变量。他们将在此脚本中的任何地方可用。


这似乎包含GYP文件中使用的变量排除,并且 也排除包括其他gyp文件设置 变量的可能性。

这是不正确的。假设您将include.gypi包含到generator.gyp脚本中。如果include.gypi在其顶级字典中有variables部分,那么这些变量可以在generator.gyp的任何地方访问。显然,不在顶级字典中定义的变量将不可访问。


记住includes是变量扩展之前进行解析。因此,您不能在包含路径中使用变量。