如何安装gerrit 插件安装插件

从工作到现在,一直弄界面相关的东西,弄了好多年,包括前公司也买了一套UI,但是用下来以后发现不是这个问题就是那个问题。现在新的公司还在用MFC。MFC其实没什么不好,就是不能改源码这点比较纠结。。(谁说不能改源码的,改完自己编译就是了。。orz。。你倒是给我个工程文件?)。
然后对比了很多市面上的GUI库,最中意的就是wxWidgets,但是他是个人维护的。。所以稳定性。。版本更新也就比较慢了。另外c++做界面嘛,最终肯定是HTML5为主流的。。。毕竟c++并不擅长做界面,那为什么不交给专业的东西 做专业的事情?
基于自己修改的那一套UI库,我个人认为,一个UI库不光是能够写写画画而已,首先它必须要有一个资源管理类--资源打包与读取,IO管理模块,同步异步读文件的。再次它的控件库要比较完整,再然后它必须要有界面编辑器和资源打包工具。。当然界面编辑器都是浮云。。。毕竟程序员自己也就是UI设计师。。。ORZ。。很遗憾我工作那么多年一直没见到过给c++设计界面的美工。。。
前几天公司的高层又在争吵一些什么WPF的问题。。老板觉得界面太丑,一些人想要什么extjs 一些人抬出c#。。。其实我想说,c++是不想做界面,真要做起来,什么c#WPF 什么extjs都是浮云。最后看到chrome的源码和国内一些人写的文章,渲染线程与主线程分离的特性,刚刚好满足前几天老板说的 显示10万条数据的问题。OK 那就这个吧。google是个大公司。里面全是代码精英。代码看下来确实惊为天人。不光包含界面库,url解析,资源文件加载,打印和打印预览 一大堆辅助函数和功能类。投入这个的研究,那真是以后什么需求都不愁了。当然很多控件还没有的。比如时间控件。。但是它的可扩展性很强,所以控件不完整这个对我来说不是什么大问题。我只想说,这是继doom3之后我接触到的质量最高的源码。。。研究它绝对不会坑爹。以我个人这么多年来的代码阅读经历,我认为一个c++程序员,到目前为止,只需要看doom3
或者chrome源码就足够了。。
以上就是废话。再经过半个月的下载源码与编译的痛苦经历之后,整理出这篇最新的关于编译chromium的文章,希望给刚入门的,或者有志于研究chrome源码的同学带来一点帮助。对于过时的编译blog。我只想说。。。大量的转载真是害死人啊。。又废话了一堆。以下开始正事。记住一点:不要问为什么,只需要照着做就行了(如果你确实是想编译成功chrome而不是扯淡的话)。
0.5 如果你不是自虐狂的话,请安装VS2013。不然。。。呵呵。自己逛逛第二条说的网址。对于我来说,能够快速从源码吸取多少东西才是王道。其他一切都是浮云。如果有人确实觉得VS2013不能接受。。OK。自己找虐去。
1.源码绝对不要获取最新版。获取哪个版本?一般来说,看chrome浏览器的版本下载就行。具体操作。下载chrome浏览器,右上角点chrome帮助。看版本信息。然后记住版本号。
2.记得www.chromium.org这个网址。以后你会是它的常客。。。
3.下载depot_tools。-----(这些基本的东西去别的blog看或者去上面这个网址看比较好。)配置好depot_tools的环境变量
4.切换到你想要保存源码的目录,执行gclient config http://src.chromium.org/svn/releases/36.0.1929.1 当然号是你在第一步看到的为准。搞错别怪我坑爹。是你自己坑自己。那些什么last know good release都是浮云。想要研究源码,就不要太纠结最新版。当然还是给出一个网址,给你们去看https://src.chromium.org/viewvc/chrome/releases/&
可以到这里查看版本的可编译状态lkgr =last &known good release
http://build.chromium.org/p/chromium.lkgr/console
5.执行gclient sync.睡上一觉。如果发现没获取完 再输入如上东西。--force 选项你看着办呗。 什么git 下载失败的问题,自己搞个VPN去弄吧。。如果你觉得这个太纠结的话。其实下载git1.9.3什么的失败也没什么影响。
6.下载完了之后。。如何判断已下载完?---运行第五步的命令。你眼睛看看,自己判断啊。。相信各位不是小朋友了。智力都基本正常的。先不要着急按照别的blog给出的gclient runhooks 什么的。。不然坑死你爹别怪我。打开build目录下的common.gypi。搜索msvs_disabled_warnings 你会看到这里禁用的一大堆警告。当然会有好几个搜索结果,如果你不懂得我说什么,你看一下“这里禁用的一大堆警告”这句话就知道我说的是哪里了。不废话 加上,
保存关闭。
7.cmd下切到源码目录。输入
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2013
set GYP_DEFINES=component=shared_library
set GYP_GENERATORS=msvs
新版本已经默认使用USE_AURA=1了。。
在这里我就要吐槽一下所有国内的blog了。。。不知道是不是大家都是linux牛人。总之我没有在任何一个blog上面看到这句话set GYP_GENERATORS=msvs。后来才在第二条的网址的某个角落看到这句话。。啧啧。。。吐血。说什么gclient runhooks 产生sln的都是坑爹货。。。当然不排除以前确实可以。。。我在这里抓破不少头皮了。。
第七条运行完毕gclient runhooks之后就会有sln了。至于哪个sln是你想要的?当然是chrome.sln了。。。先不要着急打开sln啊。请看第八条。。。
8. 打开VS2013 禁用vissual assist。。。为什么要禁用?怎么禁用?第一个疑问不要问。自己去试。第二个问题我也不会告诉你,因为这个是你应该掌握的本事。
OK 开始编译。我的笔记本怒吼了2个多小时,编译完成。好了 可以研究源码了。以下是其他废话。。。不在编译教程之内。
9.抽取框架都是浮云。千万不要试着去搞什么抽取框架的事情。为什么,抽出来就意味着你失去了google最新版的支持。。老老实实在src目录下 新建一个helloworld项目,设定好输出目录和依赖include路径。。。怎么设置?。。。打开views.sln。根据那个excample 来
直接给出答案。。目录放的不对 坑爹别怪我。自己回家数星星。或者要求你的老板扣你的工资。说你的水平不太合格。
..\..\third_party\wtl\..\..\third_party\..\..\..\..\skia\..\..\third_party\WebKit\S..\..\;..\..\third_party\skia\include\core
..\..\build\Debug\lib
输出目录什么的就自己搞了。调试目录什么的你们都懂。。当然我确信很多人不懂。不过。。。正因为这样,所以我才不告诉你们。因为痛苦得来的东西才不会忘记。
10.新建HelloWorld并编译。。。emm。。。代码文件什么的 第二条里面有。。我就不贴了。。 这里重点要说的是头文件 以及预处理命令。
我发布这篇blog为止,最新的头文件是这样设定的。。(以后坑爹了也不要怪我)
#include &base/basictypes.h&
#include &base/compiler_specific.h&
#include &base/strings/utf_string_conversions.h&
#include &ui/gfx/canvas.h&
#include &ui/views/controls/label.h&
#include &ui/views/view.h&
#include &ui/views/widget/widget.h&
#include &ui/views/widget/widget_delegate.h&
然后下面就是你们自己写的类了。。这个类在哪?请看第二条的网页。。
cpp是这样写的
#include &base/at_exit.h&
#include &base/command_line.h&
#include &base/message_loop/message_loop.h&
#include &base/run_loop.h&&
#include &hellowndd.h&//这个是我自己的头文件。。不要问一些白痴的问题。。
#include &windows.h&
#pragma comment(lib,&base.lib&)
#pragma comment(lib,&views.lib&)
#pragma comment(lib,&gfx.lib&)
#pragma comment(lib,&events.lib&)
#pragma comment(lib,&ui.lib&)
#pragma comment(lib,&base_i18n.lib&)
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPTSTR & &lpCmdLine,
_In_ int & & & nCmdShow)
CommandLine::Init(0, NULL);
base::AtExitManager at_&
ui::RegisterPathProvider();
CHECK(base::i18n::InitializeICU());
std::string app_locale = ResourceBundle::InitSharedInstanceWithLocale(&en-US&, NULL);
base::MessageLoop message_loop(base::MessageLoop::TYPE_UI);
views::Widget::CreateWindow(new WindowView)-&Show();
base::RunLoop().Run();
return (int)0;
然后c++/预处理器 加上&USE_AURA=1;NOMINMAX。OK 编译吧。。。。
然后,真正坑爹的事情出来啦。。编译通过。运行出错。调试viewexcample_with_content发现其实因为Aura框架的原因。已经不能通过旧的blog那样子生成一个简单窗口了。所以生成一个简单窗口什么的。。好像已经成为过去式了。所以上面的代码其实是没有什么用处的(如果有人知道without content生成窗口的方法。。。请告诉我,不胜感激)
放在这里,其实只是作为自己的备份。。毕竟纠结了半个月啊。。四次下载代码 十几个日日夜夜。。。第一次下载完最新版 。OK 编译不通过。。至于期间不生成sln什么抓破头皮的事就不用说了。。真是艰难啊。第二次。。OK 花钱买VPN。把tarball下回来 在tarball基础上编译。。果断果断也没有编译过去。。OK又坑爹了。。18块钱。没了。这里再愤怒吐槽天草这是要做什么?连googleapis都上不去。你这是闹哪样?第三次。。哈哈 学乖了,看别人的blog都是一路编译成功的。看了看最后发布的日期 2013.8月
OK。悟了。本人不再下载最新版了。果断下载lkgr啊。。好吧 就是上面这个版本号。 OK 又被坑。。ax_enums.h经历一场大改动。需要自己git个补丁回来。大哥我是git新手,难道你要我再恶补一下git怎么用?或者手动修改?这两个对我都没什么帮助,所以我当然不会话费力气去学什么git命令。什么diff命令浮云。毕竟我只用svn。
hoho 最后一次终于学乖了,我就下chrome发布的版本号对应的源码。。终于编译成功。泪流满面。。。那时已是半夜2点40分。。。
更加坑爹的是,第二天上班,google发布了&34.0. 版。我是不会再下载这个版本的了。。
今天是周末,正好有时间研究这个chorme 放在这里备份一下吧。省得以后要弄最新版编译又到处找资料。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:459213次
积分:4577
积分:4577
排名:第5165名
原创:64篇
转载:100篇
评论:50条
(1)(1)(2)(7)(1)(2)(2)(5)(4)(10)(2)(5)(1)(1)(1)(2)(5)(23)(15)(9)(1)(1)(3)(2)(11)(4)(2)(10)(1)(10)(8)(3)(1)(4)(21)(6)32207人阅读
Chromium开源项目(3)
我的日志(7)
从12年那会儿开始获取源码和构建chromium项目都是按照那时候的官方要求用win7+vs2010,相对来说也比较简单,按照步骤来也很快能编译出来。
1.官网的编译配置介绍:
2.编译需要的工具:vs2010/sp1,win8sdk,DXSDK,depot_tools
我用的工具都是在这里了:
depot_tools也可以从官方获取:&(命令行下执行 gclient 它会自动下载安装构建项目解决方案所需要的工具
python, git 和 svn ),下载下来之后找个地方解压出来,比如我是解压到E:盘下。
3.修改配置
按照官网说的,配置环境变量:GYP_MSVS_VERSION和depot_tools的path路径。
如果win8SDK的安装路径不是默认的 C:\Program Files (x86)\Windows Kits\8.0 的话,就需要增加一个环境变量。
GYP_DEFINES 值为你真正安装win8SDK的位置,比如C:\Users\Kuerjinjin\Downloads\Windows Kits\8.0
配置DirectX sdk的头文件及lib库路径:
windows键 + r键,输入%localappdata%\Microsoft\MSBuild\v4.0 并运行,在弹出的文件夹列表中找到Microsoft.Cpp.Win32.user.props和Microsoft.Cpp.x64.user.props并修改这两个文件。
&span style=&font-size:18&&&PropertyGroup&
&IncludePath&$(DXSDK_DIR)\I$(IncludePath)&/IncludePath&
&LibraryPath&$(DXSDK_DIR)\Lib\x86;$(LibraryPath)&/LibraryPath&
&/PropertyGroup&
&PropertyGroup&
&IncludePath&$(DXSDK_DIR)\I$(IncludePath)&/IncludePath&
&LibraryPath&$(DXSDK_DIR)\Lib\x64;$(LibraryPath)&/LibraryPath&
&/PropertyGroup& &/span&
修改WRL的头文件,默认C:\Program Files (x86)\Windows Kits\8.0\Include\winrt\asyncinfo.h
找到 enum class AsyncStatus { ... }
改成 enum /*class*/ AsyncStatus { ... }
4.代码获取:
找一个空间超过60G的磁盘比如E:\,创建文件夹chromium30,命令行下切换到该目录,
&span style=&font-size:18&&&e:
&cd chromium30
&gclient config http://src.chromium.org/svn/releases/30.0.1559.0/ &/span&
拉取目前最新的源码配置,当然你也可以在中选择自己想要的源码版本。
一般会在当前目录下生成一个.gclient的配置文件。为了减少不必要的代码获得的时间浪费,打开.gclient文件在“custom_deps”节里忽略掉部分测试代码,如:
&span style=&font-size:18&&solutions = [ { &name&
: &30.0.1559.0&,
: &http://src.chromium.org/svn/releases/30.0.1559.0&,
&deps_file&
&custom_deps& : {
&src/webkit/data/layout_tests/LayoutTests&: None,
&src/third_party/WebKit/LayoutTests&: None,
&src/chrome/tools/test/reference_build/chrome&: None,
&src/chrome_frame/tools/test/reference_build/chrome&: None,
&src/chrome/tools/test/reference_build/chrome_linux&: None,
&src/chrome/tools/test/reference_build/chrome_mac&: None,
&safesync_url&: &&,
不要关闭命令提示,直接在当前目录下输入gclient sync --force 进行源码的同步。接下来就等吧,这个同步的时间会很长,要同步十几G的文件下来。正常情况下会在同步完成之后生成解决方案。如果没有,在当前目录下接着输入gclient runhooks --force。如果确保已经100%同步完成了,生成解决方案的话可以直接输入
python build/gyp_chromium
如果是第一次接触这个项目,那么找一下 src/chrome/chrome.sln 打开,将chrome项目设置为启动项目,然后调试就OK。
-------------------------------------------------------------------------------------------------------------------------------
自美国时间日开始,谷歌对chromium源码的构建方式做了调整。
关于系统版本只支持Windows 7 x64或更高版本, x86的操作系统已经不再支持。
从chromium r254340(chromium33)之后的版本,默认的调试工具唯一指定为Visual Studio 2013,
所以如果使用最近的源码进行构建,需要安装VS2013并修改 GYP_MSVS_VERSION=2013
而构建工具除了之前一直在使用的 depot_tools ,还增加了 ninja 工具的配合(ninja也是整合在了depot_tools中)。
所以一直在使用旧版本depot_tools的开发者们,需要先更新 depot_tools (之前也就300M左右,更新后约1.86G)了。
另外一个就是要获取VS2013的工具链脚本(toolchain script)
该工具链脚本不会修改系统环境,所以使用VS13或者之前的VS10都木有问题。
下载后的工具链脚本存放在 depot_tools \ win_toolchain \ vs2013_files&
如果系统中安装了VS2013,你可以用它来编辑和调试,ninja 将仍然使用depot_tools来构建版本。
具体就以下两步:
&span style=&font-size:18&&python src\tools\win\toolchain\toolchain.py
win_toolchain\env.bat&/span&其实,说白了就是要更新一下原来的depot_tools工具。如果depot_tools更新好了,其他的跟之前的大同小异。
&span style=&font-size:18&&&e:
&cd E:\chromium35
E:\chromium35&gclient config http://src.chromium.org/svn/releases/35.0.1900.0
E:\chromium35&gclient sync --force(以往这一步会强制同步代码后生成解决方案,现在则会在同步一部分后出现找不到文件的错误)
E:\chromium35&cd src
E:\chromium35&gclient sync(确保源码同步完成)
构建方式有两种,一个是使用 ninja 构建
E:\chromium35\src&ninja -C out\Debug chrome
然后在 out/Debug 下就能看到编译出来的文件。
另一种就是使用我们熟悉的VS来构建,需要设置一个环境变量
GYP_GENERATORS=msvs-ninja,ninja
E:\chromium35\src&gclient runhooks
然后就能在 src/chrome/下找到chrome.sln的解决方案,调试方式就跟以前一样了。&/span&
-------------------------------------------------------------------------------------------------------------------------------------------
TIPS:如果是使用了chromium r254340(chromium33)之后的版本,可以直接下载我安装好的depot_tools工具,然后配置一下环境变量就可以直接用了。
1.工具,下载后解压配置环境变量。
2.(1.9的,下载后解压到depot_tools文件夹下就OK)
3.开发工具
已经生成解决方案的几个源码包:
& &&(含depot_tools和批处理)
之前一些旧版本的源码包:(可供学习研究用,VS10的项目,部分已经生成解决方案)
-----------------------------------------------------------------------------------------------------------------------------
很久没同步谷歌的源码了,突然发现现在谷歌获取chromium源码的方式又变了,实在是太坑爹了!说一下最新几个版本的获取方式:
首先说几点:
1.现在要获取源码没有VPN啥都干不了,所以你如果想要下载源码这个是少不了的!
2.再一个就是通过访问http://src.chromium.org/svn/releases/发现,从chromium39.0.2313.2之后的源码不能通过之前那种gclient config http://***的方式获取了,之后的chromium的代码刚好全部迁移到了git管理了!可以看这里了解一下
3.对于不了解自己想要获取哪个版本chromium的朋友,可以先看一下这个网址可以了解到最近的chromium金丝雀版,开发版,测试版以及稳定版等版本的版本号,便于拉取!至于chromium的这四个分支的不同点可以看下:
canary金丝雀版:每天都更新的版本,不建议签出测试,当然你要是想了解新版本特性另算。
dev开发版:每2星期更新。
beta测试版:这个每周都会有更新,6周大版本更新。
stable稳定版:2-3周更新一次版本,6周一次主版本更新;这个版本经过测试是最稳定的版本,学习了解chromium建议检出这个版本的来了解。
具体的英文介绍可以看这里:
4.关于切换分支这块大约是这样:
cd src #需要切换到src下才能使用git仓库管理
git checkout 40.0.2209.0gclient sync --nohooks --with_branch_heads --with_tags --output-json=&log.json&-------------------------------------------------
git checkout -b -newbranch
[&start_point&]创建新的分支并切换到新分支上去,
b代表branch的意思,newbranch 是新分支的名称,
如果没有指定提交点(start_point),默认从HEAD指向的提交创建分支。
git checkout -b your_release_branch 40.0.2209.05.再一个就是说说那个.gclient文件现在怎么获取
gclient config /chromium/src.git
现在再来说说怎么获取源码:
1.找一个大点儿的盘,创建一个文件夹统一管理
比如 F:\0ChromiumCodes
2.WINDOWS下是直接下载depot_tools的压缩包,并解压到F:\0ChromiumCodes\depot_tools
这个压缩包的地址是:
3.配置环境变量
计算机-右键“属性”-左侧栏“高级系统设置”-环境变量-系统变量下“Path”-编辑
在最开头添加上 F:\0ChromiumCodes\depot_
4.更新depot_tools
win+r - cmd 在命令行下输入gclient(不带参数)
gclient #不带参数第一次运行会安装msysgit和python,比较奇葩的是最新的git应该是git-1.9.0.chromium.6_bin
但是第一次运行gclient的时候它先下载git-1.9.0.chromium.5_bin
所以还需要再运行一次gclient
成功后可以运行一次gclient --version看看版本号,并注意一下有没有错误提示。
一般只显示一个如 gclient.py 0.7 等简单的版本信息,没有其他的什么客户端太旧等的提示信息那就OK
5.引导配置
如果你从未使用过git,您将需要设置一些全球git 配置;
在下面命令中使用你自己的名字和电子邮件地址替换:
git config --global user.name &JC& #名字自己改
git config --global user.email && #邮箱自己改
git config --global core.autocrlf false
git config --global core.filemode false
7.新建个空文件夹,切换到该目录下
cd F:\0ChromiumCodes\ChromiumMaster
fetch chromium
这个过程会先下载master分支下的最新源码,开始的将近3G左右的源码是在后台下载的,
命令行下只提示“still working on”所以看下只要下载量有就不要关闭窗口,源码全部下载下来差不多要下载10多个G。
VPN下470k/s的速度差不多下载了7个多小时!
之后开始下载vs,win8sdk,wdk等配置win_toolchain
8.如果这个过程中失败了,但是源码已经下载了100%了,那么就不能继续fetch chromium了,而是
gclient sync
这块操作的介绍可以找英文原文:
包括构建相关可以看一下:
(11.10更新)
Release 分支的签出操作方法:
同步并构建一个 Release 的标签(tag)!
-----------------------------------------
是一个通过git来获得的有发行版本号Release 标签(tag)
注意:您不能提交这个Release 标签(tag)。这纯粹是为了获得该发布版本的源代码。
# 确保你能获得你要签出的所有release tag信息
git fetch --tags
# 然后签出任何你想要的版本 (已知的版本可以通过命令 git show-ref --tags 来查看)
git checkout -b your_release_branch 39.0.2171.71
# 或者更明确点儿这样写 tags/39.0.2171.71
gclient sync --with_branch_heads --jobs 16Tips:说一下这里的your_release_branch是你自己要给你的分支起的名字,我看到有人朋友就直接把这个拷贝上去了,汗~
签出一个 release 的分支
---------------------------------------
注:这块是不能的同步并建立全部的release分支(即:third_party DEPS一致),请参阅该内部文档。
以下说明如何检查出一个为特定项目release分支(如src.git)
# 首先确保你已切换到 src 目录下.
# 这部分应该只需要运行一次就可以了,不过多运行几次也没事儿。
# 第一次运行时可能需要一段时间,因为它获取额外的1/2 GB左右的分支提交。
gclient sync --with_branch_heads
# 签出 src 树下的分支.
git checkout -b branch_$BRANCH branch-heads/$BRANCH
# 签出所有的DEPS修改的子模块
gclient sync --jobs 16
返回到 trunk:
---------------------------------------
#首先确保你已切换到 src 目录下.
git checkout -f master
gclient sync --jobs 16
英文的原文介绍在这里:
另外如果你想多了解一些git的操作可以看看这个:
签出里谷歌11月25日发布的最新正式版,编译后如图:
-------------------------------------------------------------------------------------------------------------------
在这里再说一下几个问题:
1.是使用VS10和VS13编译项目的一些区别:如果是用的33之前的版本源码生成的10的解决方案,那么vs2010/sp1,win8sdk,DXSDK,depot_tools这些都需要有的,如果是用的最近的源码,只需要弄好最新版的depot_tools,再安装个13就一切OK!(其实使用ninja+vs13混合编译最终调用的vs13是depot_tools下的那个,而我们要再安装个VS13不过是修改和查看代码用而已)运行那个批处理设置一下直接用就行了!
2.一般的设置我们可以放在批处理中设置好,让ninja知道我们要用的vs13,win8sdk等在我们下载好的depot_tools中!在src的同级目录(或者说就是那个.gclient所在的目录)新建一个批处理CreateBuild.bat 运行这个批处理文件可能会比较慢,耐心等待命令行窗口退出后再打开chrome.sln开始编译!批处理的内容如下:
for /f %%a in ('where gclient.bat') do set pwd=%%a
set pwd=%pwd:~0,-11%
set file=%pwd%win_toolchain\data.json
set pwd=%pwd:\=\\%
echo {&runtime_dirs&: [&%pwd%win_toolchain\\vs2013_files\\sys64&, &%pwd%win_toolchain\\vs2013_files\\sys32&], &path&: &%pwd%win_toolchain\\vs2013_files&, &version&: &2013e&, &wdk&: &%pwd%win_toolchain\\vs2013_files\\wdk&, &win8sdk&: &%pwd%win_toolchain\\vs2013_files\\win8sdk&} & %file%
set DEPOT_TOOLS_WIN_TOOLCHAIN=1
set GYP_MSVS_VERSION=2013
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_DEFINES=component=shared_library disable_nacl=1
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyCV9AOzytWwWCtNE8f7ZV56fP1u9yWwhVU' -Dgoogle_default_client_id='7.' -Dgoogle_default_client_secret='mLT8XooDODav1OJG5G3bY61d'
这里要说一下,很多朋友是从网上其他地方下载的别人用的源码包,可能他们的源码包是用的本地环境,而我们使用的混合编译,需要设置set DEPOT_TOOLS_WIN_TOOLCHAIN=1,设置为0则是让gclient不要自动去构造环境,而是利用本机现有环境!很明显的区别从打开的chrome.sln项目解决方案就能看出来,混合编译的是没有分类的虚拟文件夹的,但是设置为0的话就是用系统现有环境生成的也就是编译使用你自己安装的VS是有虚拟文件夹的,这个跟之前的10版本以前的都一样!
GYP_MSVS_VERSION很明显就不说了,GYP_GENERATORS配置编译方式的,GYP_DEFINES一般是配置win8sdk位置的,如:set GYP_DEFINES=windows_sdk_path=&C:\Program Files (x86)\Windows Kits\8.0&
如果你不知道这个批处理有没有成功执行,你也看一下src\out\Debug(或者Release)下的build.ninja文件,看看开始那两个路径是不是就是你在path里设置的depot_tools所在的路径。如果不是,而是原本的系统路径下的,那么就是没有成功执行。建议在cmd下执行批处理看看提示的错误是什么!
3.在最终的Release版本产品发布的时候,为了打包的需要可以把shared_library注释掉rem&set GYP_DEFINES=component=shared_library改为静态编译,这个时候的编译会比较慢特别是是最后的连接chrome.dll !
4.由于ninja+vs13这种混合编译模式调用的都是depot_tools下的,所以直接在打开vs13中添加文件是不会被编译到的,所以如果有在项目中添加文件就需要修改项目对应的gyp或者gypi文件,将我们添加的文件目录添加到sources节点下,然后重新运行上边的批处理文件!
5.最后再说一点,那就是如果以前使用过vs2010编译,在运行CreateBuild.bat 这个批处理之前要删除“C:\Users\$(username)\AppData\Local\Microsoft\MSBuild\v4.0”下props文件中关于$(DXSDK_DIR)的内容。(重要)
6.最近有网友说新版本的chromium编译总有些警告导致编译不过,后来我们发现暂时可以这样解决:在src\build\common.gypi 的msvs_disabled_warnings 节点里大约5325行左右,加上
排除两个警告就能正常编译通过!
7.对于想编译64位chromium的同学,需要在批处理里面另外加一句命令:set GYP_DEFINES=target_arch=x64 不过输出的是在Release_x64 或者Debug_x64下!
8.项目编译成功后有人问那个谷歌API KEY信息栏提示的问题!很多人的做法是直接将提示这段信息栏的代码注释掉,个人觉得这么做并不太妥当!其实你点右侧的那个连接也能看到怎么做,不过文章有点儿旧了。总的来说差不多也就这两种方式:第一种就是在生成项目解决方案的时候直接加参数,比如:python src\build\gyp_chromium&-Dgoogle_api_key='******' -Dgoogle_default_client_id='******** -Dgoogle_default_client_secret='******'而第二种方式就是我们在src\build\common.gypi中942行左右的'google_api_key%','google_default_client_id%','google_default_client_secret%'三个参数中直接添加也行,效果是一样的!至于这些KEY值怎么获得?这个自己去申请就行!如果你实在懒得去申请,也可以用我提供的下边这几个测试一下:
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyCV9AOzytWwWCtNE8f7ZV56fP1u9yWwhVU' -Dgoogle_default_client_id='7.' -Dgoogle_default_client_secret='mLT8XooDODav1OJG5G3bY61d'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyCWBmUuxZW1VaZZHkIembF2nengp8asUEk' -Dgoogle_default_client_id='1-bjihbnffo05svbqcncq7clirvq9meh0c.' -Dgoogle_default_client_secret='OeKyUMzNTZ1-hPPypa7GiW4x'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyBsp9n41JLW8jCokwn7vhoaMejDFRd1mp8' -Dgoogle_default_client_id='.' -Dgoogle_default_client_secret='IR1za9-1VK0zZ0f_O8MVFicn'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyCcjKzcifha1m8P4RVxytpVsx3wNDIEHsY' -Dgoogle_default_client_id='.' -Dgoogle_default_client_secret='vQKKl73QQk8_dgEF44vNTHmJ'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyBhWJ-j5RXyt5911BMuVen-WuS10mvOnrY' -Dgoogle_default_client_id='-mbp5sv9scfj78siq96jlvrem47qgvbi3.' -Dgoogle_default_client_secret='XU4b-j0Ssy-XkTvSVmiFMvNY'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyCkfPOPZXDKNn8hhgu3JrA62wIgC93d44k' -Dgoogle_default_client_id='.' -Dgoogle_default_client_secret='kdloedMFGdGla2P1zacGjAQh'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw' -Dgoogle_default_client_id='.' -Dgoogle_default_client_secret='OTJgUOQcT7lO7GsGZq2G4IlT'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyD1tTgDbP-N6BGXKZ7VqSos_IU1QflGbyg' -Dgoogle_default_client_id='.' -Dgoogle_default_client_secret='rHmKOPygcI6G-clFHb-RfuHb'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyAQfxPJiounkhOjODEO5ZieffeBv6yft2Q' -Dgoogle_default_client_id='.' -Dgoogle_default_client_secret='AIienwDlGIIsHoKnNHmWGXyJ'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM' -Dgoogle_default_client_id='.' -Dgoogle_default_client_secret='0ZChLK6AxeA3Isu96MkwqDR4'
9.看评论里有朋友提到了NACL这块(chrome://apps/),个人建议在编译的时候最好是把这块的编译设置关掉(国内其他的定制浏览器也是这么干的)。在配置编译项的时候做一下修改:
set GYP_DEFINES=component=shared_library disable_nacl=1 10.看评论里有朋友问那个浏览器启动页怎么改,其实这块你多看看代码的话也能找到在pref_names.cc文件中的kRestoreOnStartup谷歌的注释解释的很明白,定义了几种启动方式:其中:5默认标签页,1上次关闭的网页,4.打开特殊网页!那么我们就直接修改他为4这种情况下kURLsToRestoreOnStartup 要打开的网页就行了,我们在启动函数中加上这段代码就能搞定:
PrefService* prefs = profile_-&GetPrefs();
prefs-&SetInteger(prefs::kRestoreOnStartup,4);
ListValue* url_pref_list = new ListV
url_pref_list-&Set(0, Value::CreateStringValue(&&));
prefs-&SetDefaultPrefValue(prefs::kURLsToRestoreOnStartup, url_pref_list);要是想多打开几个网页,那么就继续在list里面加网址就行了!
11.看评论里有朋友问这个chromium的优化问题,那么设置&set GYP_DEFINES=branding=Chromium buildtype=Official 以官方的构建方式来做会更好一些!官方的建立方式启用了许多优化,例如:&;&;
; ;;等等~
12.再一个就是很多朋友看了common.gypi的配置后也跟着乱改配置项,比如fastbuild=1等;关于component=shared_library和fastbuild=1的区别建议大家看一下再做修改!
13.很长时间没来看看了,发现又积攒了很多很多问题,比如有人提到的这个‘ascii’的问题,具体错误提示如:UnicodeDecodeError:
'ascii' codec can't decode byte 0xce in position 9: ordinal not in range(128)!这个问题在谷歌使用python27的时候(差不多是chromium31左右)就出现了,基本我们的解决办法就是直接根据错误提示找到depot_tools\python276_bin\Lib\mimetypes.py文件,大约在249行左右注释掉这几行代码就是了!
ctype = ctype.encode(default_encoding) # omit in 3.x!
except UnicodeEncodeError:
当然,官方也给出了一种方法:set your Windows system locale to English!
14.另一个不得不提的问题就是如果你在下载编译最新几个版本的代码比如chromium40版本以上最好是设置set DEPOT_TOOLS_WIN_TOOLCHAIN=0,并下载安装最新的VS2013的更新包Update4(You
must build with Visual Studio 2013 Update 4, no other versions are supported.)要不然很可能会编译不过;至于为什么,我来说一下这个问题是因为之前的chromium编译我们使用混合编译用的是win_toolchain下的免费版VS13,这个版本比较早是存在很多BUG的,很多在chrome论坛里提交的BUG都是指向VS13,就比如我们设置&set
GYP_DEFINES=branding=Chromium buildtype=Official 编译Release版本使用混合编译基本是编译不过的。VS13 update4里面就这些问题提交了修复,所以后期的代码构建谷歌都是推荐使用VS13 Update4(版或者版)。
15.之前有童鞋发邮件问我怎么给chromium添加flash的支持,这块其实很早就有解决办法了呀!网上介绍这块的资料也不少,起初的一般都是通过添加启动命令的方式比如:
--ppapi-flash-path=&C:\PepperFlash\pepflashplayer.dll& --ppapi-flash-version=&19.0.0.226& --allow-outdated-plugins
但是吧,这种方式还是比较搓的!最好的方法是直接定义宏,我们找到&src\third_party\adobe\flash\flapper_version.h 这里面的注释中已经说了如何去自定义一个内置的flash:
#define FLAPPER_AVAILABLE
#define FLAPPER_VERSION_STRING &19.0.0.245& // 这个版本号根据PepperFlash\manifest.json中version来修改!
至于那个PepperFlash直接从chrome的程序目录下拷贝过来用就可以!
16.再一个在邮件中被提到的问题就是关于chromium对HTML5多媒体的支持,我们知道chromium相对于chrome来说&H.264,AAC,MP3 这几个是不支持的,但是实际上真的是不支持吗?不支持那才怪了呢,只不过谷歌人家默认不给你开启罢了!那么怎么让chromium支持H.264,AAC,MP3呢?这里就需要在构建项目的时候添加一些命令:
set GYP_DEFINES=disable_nacl=1 ffmpeg_branding=Chrome proprietary_codecs=1
这样重新构建完项目之后我们再编译,你就会发现chromium已经支持这几个HTML5属性了!使用刚才编译好的chromium访问:&就能看到检测结果了!
17.还有童鞋给我发邮件问怎么实现双击关闭标签,o(︶︿︶)o 唉,童鞋多看源码啊!多看看源码你就会发现这个超级简单的呀~这里给一个简单实现,具体的延伸功能再自己添加就好了:
首先找到&src/ui/events/event.h 这个头文件,我们要在这里添加一个鼠标双击的判断,直接在这个文件里搜一下&boolIsOnlyLeftMouseButton() const 这个方法,我们直接在这个方法下添加一个双击判断:
bool IsDoubleLeftMouseButton() const {
return (flags() & EF_LEFT_MOUSE_BUTTON) &&
(flags() & EF_IS_DOUBLE_CLICK);
然后找到&src\chrome\browser\ui\views\tabs\tab.cc 这个文件,我们在&bool Tab::OnMousePressed(const ui::MouseEvent& event) 方法中添加一个判断并关闭标签的代码:
if (event.IsDoubleLeftMouseButton()){
if (controller()-&IsTabPinned(this))
controller_-&CloseTab(this, CLOSE_TAB_FROM_MOUSE);
编译一下运行chromium打开几个标签,然后双击一下试试效果,是不是都关闭掉了?都说了超级简单~
18.对于编译完成的chromium进行压缩打包的问题,这里我共享一个批处理给大家用![共享地址在这里](/s/1dDBc7kt) 下载之后直接解压到Out\Release目录下运行7zPack.bat这个批处理就可以了!有什么特殊需求的可以自己打开这个文件修改~
具体的批处理内容如下:
Compression packing ( kuerjinjin)
rem 根据项目中生成的带版本号的manifest文件创建版本文件夹
for /f %%a in ('dir /b /o:n ^| findstr ^[0-9].manifest') do set VersionDir=%%a
set VersionDir=%VersionDir:~0,-9%
set h=%time:~0,2%
set h=%h: =0%
set App=Chromium%date:~0,4%%date:~5,2%%date:~8,2%-%H:~0,2%%time:~3,2%%time:~6,2%
:: 打包之前先清空包括子目录中的文件,然后创建文件夹
if exist %App% rd /s /q %App%
md %App%\%VersionDir%
echo ---------------------------------------------------------
echo -- BAT name: Compression packing
echo -- Edit Time:
echo -- Author: kuerjinjin
echo -- Copy the files that need to be packed......
echo ---------------------------------------------------------
:: 这两个需要放到版本号文件夹外边
copy /y chrome.exe %App%
copy /y wow_helper.exe %App%
:: 拷贝manifest文件
copy /y %VersionDir%.manifest %App%\%VersionDir%
:: 拷贝默认的 dll 文件
copy /y chrome.dll %App%\%VersionDir%
copy /y chrome_child.dll %App%\%VersionDir%
copy /y chrome_elf.dll %App%\%VersionDir%
copy /y d3dcompiler_46.dll %App%\%VersionDir%
copy /y ffmpegsumo.dll %App%\%VersionDir%
copy /y libEGL.dll %App%\%VersionDir%
copy /y libGLESv2.dll %App%\%VersionDir%
copy /y pdf.dll %App%\%VersionDir%
:: 拷贝默认的 pak 资源文件
xcopy /s /e /i /y Locales\*.* %App%\%VersionDir%\Locales
copy /y chrome_100_percent.pak %App%\%VersionDir%
copy /y resources.pak %App%\%VersionDir%
:: 拷贝编码支持文件
copy /y icudtl.dat %App%\%VersionDir%
:: 拷贝扩展,插件等的文件夹
xcopy /s /e /i /y default_apps\*.* %App%\%VersionDir%\default_apps
xcopy /s /e /i /y VisualElements\*.* %App%\%VersionDir%\VisualElements
xcopy /s /e /i /y PepperFlash\*.* %App%\%VersionDir%\PepperFlash
echo ----------------------------------------------------
echo -- Copy complete!
echo -- Start the compressed file, please don't close the window!
echo ----------------------------------------------------
:: 开始压缩程序包
7z.exe a -t7z -mx9 %App%.7z &%App%\*&
rem rd /s /q %App%
echo ----------------------------------------------------
echo -- Pack and go complet!
echo ----------------------------------------------------
start %App%
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
待续......
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:66759次
排名:千里之外
评论:258条
(3)(3)(1)(1)(1)}

我要回帖

更多关于 eclipse gerrit插件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信