程序中定义了预处理变量FOO、PAREN_VALUE和HASH_VALUE,宏定义变量VALUE、PAREN_VALUE和HASH_VALUE,对应与上述defines.gyp文件中的设置。
c)生存ninja文件:
d)执行ninja,生成可执行程序,然后执行可执行程序:
通过程序的执行结果可以看到个宏定义的效果。 【例子—通过命令行传递参数】
a)结合上述的defines.c,在编写一个define-env.gyp的文件,内容如下:
defines中定义了‘VALUE=<(value)’,‘<(value)’用于展开变量value的值。value值的定义有如下两种情况: b)
b1)默认情况,在命令行中不加任何的操作,gyp文件中‘variables’定义有”'value%':'5'”,后面有个“%”也就是value的值默认为5。
执行gyp、ninja后,然后执行程序: 可以看到value是默认的值。
b2)通过命令行传递来改变value默认的值:
命令行gyp后面的“-Dvalue=20”,用来改变gyp文件中value的默认值,现在是value=20,所以程序执行好后VALUE是20。注意,在gyp文件中要获得value值,要用‘<(value)’这样的书写方式。 2.1.6、关键字dependencies
类型为list,本target所依赖的其他的target列表。 【例子】 a)编写一个
main_dependencies.gyp和main.c文件,内容如下:
main.c中有一个函数”int funcB()”,该函数位于另一个文件中。
b)在当前路径下面,建立一个文件夹“b”,进入该文件夹,创建b.gyp和b.c,如下:
所建立的所以文件目录如下:
c)执行gyp,ninja生成可执行程序
可以看到可执行程序main的生成,以及静态库libb.a的生成。
如果把main_dependencies.gyp中的“'dependencies': ['b/b.gyp:b'],”删掉,在重复上述a)、b)和c)步骤,可以看到,如下的错误提示:
通过上述的案例就可以很清楚dependencies在gyp文件中的作用了。 2.1.7、关键字direct_dependent_settings
类型为dict,和all_dependent_settings功能类似,没有传递性,直接依赖。可参考all_dependent_settings,与all_dependent_settings略有不同。下述的例子可以和all_dependent_settings中的例子对比看: 【例子】
a)编写一个direct-dependency.gyp文件,内容如下:
例子要生成一个名称为chained的可执行程序,编译该程序需要头文件header.h。generate_header部分用于生成头文件,所以在chained部分中加入对generate_header部分的依赖,加上“‘dependencies':['generate_haeader'],'”。