chromium的gyp构建过程
来源:互联网 发布:ssh框架项目源码下载 编辑:程序博客网 时间:2024/04/28 15:52
下载完chromium代码后开始编译,这就引出了chromium 的gyp 构建过程,即由gyp文件生成Makefile文件。gyp构建系统没有采用递归make。
两步完成构建过程,在src目录下
src$ . build/android/envsetup.sh // 环境设置src$ android_gyp // 生成工程文件,进而可以生成Makefile文件开始的gyp文件是build/all_android.gyp,它包含了最顶层的目标,并包含其他gpy文件。默认目标是ALL。
当然也可以只编译某一个目标,例如content_shell_apk就是其中一个目标,在content/content_shell.gypi中,这样就只编译content_shel及其依赖模块。
可以分析一下build/android/envsetup.sh脚本文件
该文件最后声明了一个函数就是android_gyp(该函数是build/gyp_chromiumd得封装), 所以也在最后直接调用该函数,这样就不在运行android_gyp了。
了解了all_android.gyp就可以进行必要的裁剪了,而不是所有的模块都编译,例如去掉test模块的编译。
gyp构建系统参考:http://blog.csdn.net/qq295445028/article/details/7859103
简单列一下gyp/gypi文件格式
gyp文件就是一个JSON格式的文件,一般包含如下字段:(参考build/all.gyp文件)
conditions(条件判断),includes(包含的构建文件),target_defaults(构建目标默认属性),targets(构建目标列表),variables(构建文件使用的变量)
1. conditions
分为普通的conditions(在load构建文件之后立即计算)和target_conditions(在计算完成依赖之后然后来进行计算),两个过程分别就是early and late phases阶段。对于conditions写法非常简单:
'conditions':[
['OS==Linux',{'sources':['linux_interface.cc']}], // 系统环境变量的判断 linux平台下,变量sources加入linux_interface.cc文件
['notifications==0', {'sources!': [ // 用户自定义变量的判断
'renderer/notification_provider.cc',
'renderer/active_notification_tracker.cc',
],
]
2. target
3. includes
4. actions
5. variables
以content shell为例,如何编译cc/cpp文件时加入某个宏(以ENABLE_PLUGINS为例)呢?相当于全局宏
首先要找对gyp文件,先找到target 为so的地方,很容易在content_shell.gypi中找到下面的target_name
'target_name': 'libcontent_shell_content_view', 它又依赖与“content_shell_lib”
而content_shell_lib依赖于chromium各目录下gyp文件的某一个target(这些target最终生成.a文件)。所以
搜索ENABLE_PLUGINS后,发现都在content目录下使用,所以可以找到content.gyp文件,加入宏即可
部分代码如下(还需要加入用户自定义变量enable_plugins,这样plugin相关代码才会编译)
'variables': { 'chromium_code': 1, # Use higher warning level. 'enable_plugins': 1, 'chromium_enable_vtune_jit_for_v8%': 0, # enable the vtune support for V8 engine. 'directxsdk_exists': '<!pymod_do_main(dir_exists ../third_party/directxsdk)', }, 'target_defaults': { 'defines': ['CONTENT_IMPLEMENTATION', 'ENABLE_PLUGINS=1'],...
参考:
GYP相关文档: https://code.google.com/p/gyp/w/list
build system: http://www.wy182000.com/2011/09/01/buildsystem/
- chromium的gyp构建过程
- chromium之gyp构建系统
- chromium构建系统——gyp
- chromium构建系统——gyp
- chromium构建系统——gyp
- 浅析chromium构建过程
- 构建基于Chromium的应用程序
- GYP(Generate Your Project)一个很有价值的构建系统
- GYP(Generate Your Project)一个很有价值的构建系统
- Ubuntu编译Android KitKat 4.4出现Chromium gyp HashSet_jni.h报错的解决方法
- gyp.main执行过程
- 基于CefSharp构建基于Chromium的应用程序
- WebKit之chrome的构建系统工具gyp(类比于qmake)
- gyp
- GYP
- window平台创建GYP构建环境笔记
- chromium启动的函数调用过程
- 下载chromium源码的过程记录
- 百度地图实现根据路线添加覆盖物
- 绝对路径和相对路径的区别
- cocos2dx小知识——暂停界面的实现
- Java代理模式(静态代理、Cglib动态代理)
- struts2的工作流程
- chromium的gyp构建过程
- Storm-源码分析- Component ,Executor ,Task之间关系
- 更改git bash默认的路径
- ubuntu下配置phpmyadmin
- C_分支结构篇
- android tabHost选项卡自定义
- 使用Spring进行面向切面(AOP)编程
- 详细介绍Spring事务管理
- lucene3.5建立索引和查询