gyp documentation文档'variables'
部分如下:
'变量':可以插值的变量的定义 用于文件的其他各个部分。
(强调我的)。 这似乎排除了使用包含的gyp文件中的变量,也排除了包含其他设置变量的gyp文件的可能性。
这是对的吗?这些变量的范围是什么,以及如何在全局设置变量?
我看到在Chromium中,build/common.gypi
设置了很多变量,但Chromium也使用了与普通gyp_chromium
不同的魔术gyp
脚本。
答案 0 :(得分:1)
变量的范围是GYP与C ++中局部变量的范围非常相似。假设您在variables
字典FOO
中定义变量。 FOO
中定义的变量范围是BAR
的父级字典FOO
。您可以在BAR
内的任何位置使用这些变量,而不在其外部。
如何全局设置变量?
了解所描述的规则非常容易。将variables
字典添加到gyp脚本的顶级字典中,并在其中定义一些变量。它们将在此脚本中的任何 1 处可用。
这似乎排除了使用包含的gyp文件中的变量,和 还排除了包含其他
gyp
文件的可能性 变量
事实并非如此。假设您将include.gypi
包含在generator.gyp
脚本中。如果include.gypi
的顶级字典中包含variables
部分,则generator.gyp
中的任何位置都可以访问这些变量。显然,不能在顶级词典中定义的变量是不可访问的。
1 请记住,在变量扩展之前解析includes
。因此,您不能在包含路径中使用变量。