gyp文档记录了'variables'
这样的部分:
'variables':可以在文件的各个其他部分中插入和使用的变量的定义。
(强调我的)。这似乎排除了使用包含的 gyp 文件中的变量,也排除了包含其他设置变量的 gyp 文件的可能性。
这个对吗?这些变量的作用域是什么,如何全局设置变量?我看到在 Chromium 中,build/common.gypi
设置了很多变量,但 Chromium 也使用了gyp_chromium
不同于 plain 的魔法脚本gyp
。
变量的作用域 GYP 与 C++ 中的局部变量的作用域非常相似。假设您在variables
字典中定义了一个变量FOO
。中定义的变量的范围FOO
是字典BAR
,它是FOO
. 您可以在内部的任何地方使用这些变量,也可以在BAR
它之外的任何地方使用这些变量。
你如何设置全局变量?
了解所描述的规则非常容易。将variables
字典添加到 gyp 脚本的顶级字典并在其中定义一些变量。它们将在此脚本中的任何位置1可用。
这似乎排除了使用包含的 gyp 文件中的变量,也排除了包含其他
gyp
设置变量的文件的可能性。
这不是真的。假设您包含include.gypi
在generator.gyp
脚本中。如果它的顶级字典中include.gypi
有variables
部分,则这些变量可以在generator.gyp
. 显然,不在顶级字典中定义的变量将无法访问。
1请记住,includes
在变量扩展之前进行解析。因此,您不能在包含路径中使用变量。