当前位置:首页 > Gyp解析文档 - 图文
执行该程序后,会看到“Debug configuration”的打印,这是因为可执行程序会根据gyp文件中defines后面的内容来执行程序中相应的语句。
同样,执行ninja -C out/Release和ninja -C out/Foo后,也会有相应的输出。 2.1.4、copies关键字
类型为list,用于执行普通的复制行为。该字段下面必须包含两个字段项目:
? destinations:string类型,文件被复制的目的路径 ? files:list类型,要复制的文件列表
【例子】
a)编写一个copies.gyp的文件,内容如下:
当前目录下面包含一个文件“executable-file.sh”,将该文件复制到”PRODUCT_DIR”中,“PRODUCT_DIR”是gyp的内建宏变量,默认情况下执行gyp后,gyp会在当前路径下面建立一个目录out/Default,当前路径加上out/Default也就是PRODUCT_DIR的值。 b)生成ninja文件,
c)执行ninja命令,使gyp文件的中的命令生效:
可以看到”executable-file.sh”文件被复制到out/Default下面。 2.1.5、关键字defines
类型为list,用来定义预处理或者宏变量传递给编译器,也可通过命令行传递给编译器。 【例子—预处理和变量】
a)编写一个defines.gyp的文件,内容如下:
defines后面定义了‘FOO’用于预处理定义;'VALUE=1'和‘PAREN_VALUE=(1+2+3)’,既是预处理定义又是宏变量定义,后面的变量为整数类型,PAREN_VALUE后面的(1+2+3)用于执行数值计算,然后赋值给PAREN_VALUE;'HASH_VALUE=”a #1”',既是预处理又是宏定义,后面的变量为字符串类型。
b)编写一个defines.c文件,内容如下:
程序中定义了预处理变量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文件,内容如下:
共分享92篇相关文档