Chromium for mac (2015)

Chromium for mac (2015)


1.准备工作

1)MAC系统

可运行的版本在10.9以上的MAC系统

2)XCode IDE

版本在5以上的 XCode 下载地址

3)项目构建工具 depot_tools

安装gclient,它是depot_tools中的一部分,所以还需要下载安装depot_tools(看tips

4)XCode 插件

通过XCode中menu -> Preferences -> Downloads(如果没有找一下 Components)安装一个 “Command Line Tools”工具

5)OS X 10.10 SDK

可以通过运行命令:

sh ls `xcode-select -p`/Platforms/MacOSX.platform/Developer/SDKs

来查看一下你的机器是不是已经安装过了,如果没有的话在xcode6安装包里找一个放到上面的目录中

tips: 关于下载安装depot_tools的问题:

a.安装2.2.1以上版本的 Git for OS X
b.使用git获取depot_tools工具

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

c.添加环境变量(添加depot_tools到PATH中):

export PATH=`pwd`/depot_tools:"$PATH"

2.使用Git签出源码

  mkdir chromium #创建的路径中不要有空格,比如~/Mac OS X/chromium会导致构建失败
  cd chromium
  fetch --nohooks chromium # 可选项: --no-history
  gclient runhooks

tips:使用 fetch –nohooks chromium 命令差不多会签出22G左右的代码,当然这些都是包含历史信息的;如果你不需要只想快速签出代码你也可以使用 fetch –no-history 命令来获取轻量级的源码,这种方式签出的代码大约有 6.5G 大小,如果以后觉得需要这些还可以通过以下命令恢复回来: git fetch –unshallow

如果要更新代码:

git rebase-update
gclient sync

3.项目构建

chromium在OS X系统中只能使用Ninja工具Clang编译器来进行构建。
可能会遇到需要提高全系统或者个人用户的进程权限问题,比如遇到如下的错误:

clang: error: unable to execute command: posix_spawn failed: Resource temporarily unavailable
clang: error: clang frontend command failed due to signal (use -v to see invocation)

可能就是说当前的权限不够,可以通过以下命令来检查:

sysctl kern.maxproc
sysctl kern.maxprocperuid

通过如下命令提高权限:

sudo sysctl -w kern.maxproc=2500
sudo sysctl -w kern.maxprocperuid=2500

一般来说MAC OS X 系统在10.7或者以上版本的都不会遇到这些问题,如果遇到了可能需要排查一下是否有恶意进程存在。

4.快速构建

一般首次的完整构建时Debug和Release是差不多的,但是Release下的连接更快,可以通过运行命令:

GYP_DEFINES=fastbuild=1 build/gyp_chromium

完全禁用调试符号,可以使完整的重建和连接速度更快; 当然,你可以还需要安装ccache来辅助加快构建。

5.运行

所有的构建输出在本地都是放在out文件夹下(比如~/chromium/src/out),你可能会找到{Debug|Release}/ContentShell.app或者{Debug|Release}/Chromium.app 等app,这取决你的配置。

6.单元测试

默认是有这么几个单元测试项目的:
chrome/chrome.gyp 中的 unit_tests
base/base.gyp 中的 base_unittests
net/net.gyp 中的 net_unittests
url/url.gyp 中的 url_unittests

构建完成之后他们会出现在对应的out/{Debug|Release}文件夹下,你可以通过如下命令来运行他们:

~/chromium/src/out/Release/unit_tests

7.关于编码风格的问题

代码每行结尾是不允许有空格的,如果你有这个在每行结构空格的习惯那么你可能会很不适应,不过有一个叫做 GTM Xcode Plugin 插件可能会对你有帮助!

8.调试

关于chromium在 Mac OS X下的调试,这里有一个 不错的文章
如果你想在有图形界面的环境下调试,而不是只有lldb命令行的调试,你可以看看 这篇文章

9.使用Xcode-Ninja混合编译

虽然默认不支持Xcode,但是GYP构建是可以使用混合编译的,虽然这样会导致编译很慢,但是运行起来很快,并且可以启用检索功能。

set GYP_GENERATORS=ninja,xcode-ninja 

这样编译的时候依然是使用的Ninja进行编译的。

1)混合编译的这种方式编译要修改gyp的主目录到两个深层目录下,否则编译后的输出目录会不可点击
添加 xcode_ninja_main_gyp=src/build/ninja/all.ninja.gyp 到 GYP_GENERATOR_FLAGS 然后再 gclient runhooks,打开 src/build/ninja/all.ninja.xcworkspace

2)再一个会遇到的问题就是每次在你启动chrome的时候都会像新标签页一样打开一个 http://YES 的标签页。解决方法就是打开scheme editor的运行方式,选择选项标签,去掉勾选“Allow debugging when using document Versions Browser”
因为这个选项被勾选之后XCode会默认添加一条启动参数 -NSDocumentRevisionsDebugMode YES ,而这个参数被解析为是要打开一个YES的URL网址。

3)如果你要限制可见对象的数量,众所周知这样是可以提高XCode性能的,添加:

xcode_ninja_executable_target_pattern=%target%

其中的 %target% 是一个正则表达式用来匹配你想要包含的可执行的目标

如果你想要包含非可执行的目标,可以使用:

xcode_ninja_target_pattern=All_iOS

10.使用 Emacs 作为编辑工具提交索引的问题

使用 Emacs的 Cocoa版本 在Mac OS的环境中使用 git commit 提交索引的时候会在一个窗口中打开该消息下的所有其他人,解决方法就是创建一个shell脚本($HOME/bin/EmacsEditor)

#!/bin/sh
# All of these hacks are needed to get "git commit" to launch a new
# instance of Emacs on top of everything else, properly pointing to
# the COMMIT_EDITMSG.
realpath() {
    [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"
}
i=0
full_paths=()
for arg in "$@"
do
  full_paths[$i]=$(realpath $arg)
  ((++i))
done

open -nWa /Applications/Emacs.app/Contents/MacOS/Emacs --args --no-desktop \
    "${full_paths[@]}"

放到你的 .bashrc 或者类似文件中:

export EDITOR=$HOME/bin/EmacsEditor

11.其他

1)Chromium_OSX.dmg 的安装要求 OS X 10.6及以上系统版本,非苹果机器也会要求CPU必须是因特尔的。
2)从39版本开始(2014.12.9),chromium for MAC OS X 只支持64位版本的,32位版本已不再支持!原因是在MAC系统中39及以上版本的chromium或者chrome已经不能使用32位的NPAPI插件了!
官方的说明在这里
3)构建64位的方式:

build/gyp_chromium -Dtarget_arch=x64 -Dhost_arch=x64

4)刚编译的chromium for mac稳定版本 46.0.2543.0
这里写图片描述

猜你喜欢

转载自blog.csdn.net/Kuerjinjin/article/details/49333749
今日推荐