一、环境准备
http_proxy=127.0.0.1:10809
https_proxy=127.0.0.1:10809
(前面不要加http://,例如http://127.0.0.1:10809,这样反而不行)
4、设置VS2022环境变量,windows sdk自己在本地找,或者电脑下载一个everything.exe,查找比较快。这里可能会出现,有的人电脑装了好多版本的vs,建议最后装vs2022,不然可能后面编译找不到正确的windows sdk报错。
5、安装git. 装好后git需要设置一些配置。
参照 https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md
git也要设置代理。
git config --global http.proxy=127.0.0.1:10809
git config --global https.proxy=127.0.0.1:10809
6、重启电脑,是为了让环境变量生效。
二、环境已准备就绪,下面开始拉取代码
(这里编译的不是master,而是指定branch)
先放官网地址:https://bitbucket.org/chromiumembedded/cef/wiki/MasterBuildQuickStart.md#markdown-header-windows-setup
1、下载depot_tools.zip
,找个大一点的磁盘(200G左右),如果中途拉取失败的话,会有个_bad_scm文件夹生成,占用的空间非常大,所以建议200G,亲身体验。解压depot_tools,将depot_tools添加到path环境变量,并且拉到最上面。
2、用管理员打开CMD,进到depot_tools路径下面。执行update_depot_tools.bat,如果出现连接超时,说明代理没设置好,可以尝试将超时的链接拷贝到浏览器中去访问,看看能不能访问得到。或者在CMD上面再设置一次代理(CMD关闭就会失效)。
set http_proxy=127.0.0.1:10808
set https_proxy=127.0.0.1:10808
3、下载 automate-git.py
,到automate文件夹下面,文件夹自己创建,跟depot_tools同级。进到automate文件夹,执行automate-git.py
。如果出现超时说明是git代理没设置好。
4、创建create.bat
脚本,内容是:
set GN_DEFINES=is_component_build=false //注意这个不要开,不然后面不好打包,插件太多
set GN_DEFINES=is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome //开启H264支持,有个头文件要修改,自行百度
set GN_ARGUMENTS=--ide=vs2022 --sln=cef --filters=//cef/*
python3 ..\automate\automate-git.py --download-dir=F:\cef-code\chromium_git --depot-tools-dir=F:\cef-code\depot_tools --no-build --branch=5672
is_component_build=false
//注意这个不要开,不然后面不好打包,插件太多
--download-dir=F:\cef-code\chromium_git
//源码会下载到这里面
--branch=5672
//代码分支版本
运行脚本,要等很久。中断了就重复运行,当然要先看一下是什么报错,我之前就是磁盘爆满中断。有可能也是梯子断了。估计要下一个晚上。
5、源码下完之后,
进到 chromium\src\cef里面,创建脚本create.bat:
set GN_DEFINES=ffmpeg_branding=Chrome proprietary_codecs=true is_official_build=true use_jumbo_build=true is_component_build=false
set GN_ARGUMENTS=--ide=vs2022 --sln=cef --filters=//cef/*
call cef_create_projects.bat
这里是创建CEF vs项目的脚本,运行之后会在 chromium\src\out 下面生成CEF的项目目录。
这里可能会报一个错:
RuntimeError: requested profile "F:\cef-code\chromium_git\chromium\src\chrome\build\pgo_profiles\chrome-win32-5672-1683023364-7247966391e939f36249c5509b49406c09455a6d.profdata" doesn't exist, please make sure "checkout_pgo_profiles" is set to True in the "custom_vars" section of your..........
解决办法:找到 chromium\src\build\config\compiler\pgo\pgo.gni
文件,chrome_pgo_phase=0
再次运行create.bat,这样就算是成功了
6、编译CEF。进到 chromium\src,运行 ninja -C out\Release_GN_x86 cef
只编译release_x86的,其它可自行编译。这里又要好久,估计有五万多个文件,又要半天。中途报什么字符集错误,不用管,编译没有中断就行。
7、编译sandbox,ninja -C out\Release_GN_x86_sandbox cef_sandbox
三、打包发行版本。
1、进到chromium\src\cef\tools 里面,有个打包脚本 make_distrib.bat
,不过我们要修改一下里面的内容。
@echo off
python.bat %~dp0\make_distrib.py --allow-partial --minimal --no-symbols --no-docs --output-dir %~dp0\..\binary_distrib\ %*
然后运行命令 make_distrib.bat --ninja-build
,
这里可能会有报错,
会提示你 msvs_env.bat
抛出异常,这里是有个VS的环境变量找不到,应该是自定义安装目录导致找不到的,可以自己设置一下。脚本的意思是,先读取CEF_VCVARS
的环境变量,没有就用
set vcvars =
设置一个相对的路径。
解决办法:
set CEF_VCVARS=D:\vs2022\VC\Auxiliary\Build\vcvars32.bat
或者修改 set vcvars =
的值,反正你得让它找到 vcvars32.bat
当然,如果你是编译64位的,要用 vcvars64.bat
,
2、再次运行 make_distrib.bat --ninja-build
,应该就没有什么问题了。
生成的文件在 chromium\src\cef\binary_distrib 里面,
到此为止,剩下的就是用CMAKE去生成vs工程,然后做二次开发。当然,在chromium\src\out\Release_GN_x86 也是有生成好的exe,可以直接使用。