libAdblockPlus 与 cef 编译总结 ----Windows环境
为防止出现各种莫名其妙的问题,请在干净的 windows10 (x64)上 安装vs2019 及相应的sdk、模块。保持系统语言环境为 English(USA).
根据老外的习惯,最好将vs2019安装在系统盘符C盘下(默认安装即可.)
建议使用虚拟机 VMware,将准备好的环境打 快照 ,避免反复。
注意:网络通畅是前提条件。有条件的可购买一个vpn。
以下涉及到的路径请自行修改。
一、libAdblockPlus.
libAdblockPlus 依赖 V8 引擎,首先要编译V8.
1) V8编译步骤
.下载安装 google的 代码管理工具.depot_tools.
. 配置系统环境变量
变量名 | 变量值 |
DEPOT_TOOLS_UPDATE | 0 |
DEPOT_TOOLS_WIN_TOOLCHAIN | 0 |
GYP_MSVS_VERSION | 2019 |
path 添加 C:\depot_tools;
.新建一个code 文件夹 c:\code.
命令 |
备注 |
cd code | |
fetch v8 | 获取到的是master支,非稳定版本. |
git checkout 8.8-lkgr | 稳定版本 |
gclient sync -v |
同步 |
gclient sync -D |
删除非本分支的数据 |
生成工程
gn gen out.gn\x64.debug --sln=v8 --ide=vs2019 --args="is_component_build=false is_debug=true target_cpu=\"x64\" v8_enable_backtrace=true v8_enable_slow_dchecks=false v8_enable_i18n_support=false v8_monolithic=true v8_optimized_debug=true v8_static_library=true v8_use_external_startup_data=false is_clang=false"
参数 可以根据自己需要修改。(is_clang=false 比较关键)
编译:
ninja -C out.gn/x64.debug v8_monolith
到此,v8静态库准备好了。
2) 编译 libadblockplus
git 代码:
git clone -b 11.0-c0.3.0 --recursive https://gitlab.com/eyeo/adblockplus/libadblockplus
生成工程: (参考 libadblockplus 目录下的createsolution.bat 里面的内容。)
set "GYP_DEFINES=libv8_lib_dir=C:\code\v8\out.gn\x64.debug\obj libv8_include_dir=C:\code\v8\include libv8_show_warnings=true"
python msvs_gyp_wrapper.py --depth=build\x64 -f msvs -G msvs_version=2017 -I libadblockplus.gypi --generator-output=build\x64 -Dtarget_arch=x64 -Dhost_arch=x64 abpshell.gyp tests.gyp
工程目录: C:\code\libadblockplus\build\x64
打开对应工程.sln,修改 工程属性里面的c++ 相关路径, linker相关路径,完成编译。
注意:v8_enable_pointer_compression = false;V8_31BIT_SMIS_ON_64BIT_ARCH
可能会用到微软的 vcpkg, 具体用法请在github 上查阅。
参考网址:
https://blog.csdn.net/qi1993315/article/details/80734045
https://zhuanlan.zhihu.com/p/67190593
https://blog.csdn.net/qq_33958297/article/details/105331502
https://issues.adblockplus.org/ticket/6981/
二 Cef 的编译
.相关步骤
步骤 | 说明 |
下载 depot_tools ,按前面v8 配置好环境变量,如已进行libadblockplus编译,此步可忽略。 | |
gitcheckout 切换 depot_tools到指定分支 |
CHROMIUM_BUILD_COMPATIBILITY.txt |
下载cef,然后查看对应版本的chromium 分支号如:93.0.4577.25 |
CHROMIUM_BUILD_COMPATIBILITY.txt |
fetch chromium 代码 ,30G 左右 | |
git checkout 到指定分支 93.0.4577.25 | git checkout -f 93.0.4577.25 |
gclient sync -v chromium | |
拷由cef 到 src目录下 | |
执行create.bat生成工程 |
create.bat 内容参考 https://bitbucket.org/chromiumembedded/cef/wiki/MasterBuildQuickStart.md [ set CEF_USE_GN=1 set GN_DEFINES=is_official_build=true ffmpeg_branding=Chrome proprietary_codecs=true //支持h264 (同时要修改third_party里面相应的config.h 里面的 #define CONFIG_SIPR_PARSER 1 set GN_ARGUMENTS=--ide=vs2019 --sln=cef --filters=//cef/* ] |
编译 :
cd c:\code\chromium_git\chromium\src
ninja -C out\Debug_GN_x86 cef
SandboxSetup:
https://bitbucket.org/chromiumembedded/cef/wiki/SandboxSetup
# Create a binary distribution for the cef_sandbox build:
cd c:\path\to\chromium\src\cef\tools
make_distrib.bat --allow-partial --sandbox --ninja-build --no-archive --no-symbols --no-docs --minimal