C:\kSource\kpdf\depot_tools
ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004
if (mode.value & ENABLE_VIRTUAL_TERMINAL_PROCESSING) == 0:
SetConsoleMode(h, mode.value | ENABLE_VIRTUAL_TERMINAL_PROCESSING)
return True
depot_tools\setup_color.py
bug,修改一下它的源代码:mkdir google
cd google
gclient config --unmanaged https://pdfium.googlesource.com/pdfium.git
# In order to use your locally installed version of Visual Studio to build Chrome.
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
gclient sync
For details search for DEPOT_TOOLS_WIN_TOOLCHAIN in the instructions at https://chromium.googlesource.com/chromium/src/+/HEAD/docs/windows_build_instructions.md
生成 gn 构建文件
# 进入 pdfium 根目录
cd pdfium
# 使用 VistulStudio 编译必要项
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2019
# 利用 GN 来生成构建文件 gn args <directory>
gn args out/Release86
将以下内容拷贝进 args.gn 文件后,保存并退出编辑。
# Build arguments go here.
# See "gn args <out_dir> --list" for available build arguments.
use_goma = false # Googlers 可以使用它来分布式编译。确保 goma 已安装并首先运行。
is_debug = true # 要生成 release 库,所以关闭调试功能。
# 设置为启用实验性 Skia 后端。
pdf_use_skia = false
# 设置为启用实验性 Skia 后端(仅限路径)。
pdf_use_skia_paths = false
pdf_enable_xfa = false # 设置 false 以删除 XFA 支持(隐含 JS 支持)。
pdf_enable_v8 = false # 设置 false 以删除 Javascript 支持。
pdf_is_standalone = true # 设置非嵌入式构建。
# true 编译为动态库 /MD,/MDd,false 编译为静态库 /MT,/MTd
is_component_build = true # 禁用组件构建(必须为 false)
# pdf_is_complete_lib 为 false 时,编译为多个静态库,true 编译为一个独立的静态库
# 编译为一个独立的静态库(is_component_build 必须为 false)
# pdf_is_complete_lib = true
clang_use_chrome_plugins = false # 当前必须为 false。
# cpu 架构;x86、x64 可选
target_cpu = "x86" # 默认就是编译 x64 平台,编 x86 平台就需要修改了。
# true 将用 clang 进行编译,false 将用 VS2019 编译
# is_clang = false
vs_toolchain.py 构建配置脚本会读取:path = os.environ.get('vs%s_install' % version)
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
C:\Program Files (x86)\Windows Kits\10
if path and path[0] in ("\"", "'"): path = path[1:]
if path and path[-1] in ("\"", "'"): path = path[:-1]
path = path.replace("\\\\", "\\")
#print("NormalizePath", path) # 一定不能打印东西,打印了就相当于报错了。
# 执行构建示例程序动作
ninja -C <directory> pdfium_test
# 执行构建整个 产品动作
ninja -C <directory> pdfium_all
# 执行构建 pdfium 库动作(本文便是执行构建 pdfium 动态库动作)
ninja -C <directory> pdfium
# 这里,简单使用:
E:\kpdf\pdfium>ninja -C out\Release86 pdfium
成功编译出来:
E:\kpdf\pdfium>ninja -C out\Release86 pdfium
ninja: Entering directory `out\Release86'
[3261/3261] LINK(DLL) pdfium.dll pdfium.dll.lib pdfium.dll.pdb
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2019
E:\kpdf\pdfium>gn args out/Release86
Waiting for editor on "E:\kpdf\pdfium\out\Release86\args.gn"...
Generating files...
Done. Made 355 targets from 139 files in 5690ms
E:\kpdf\pdfium>ninja -C out\Release86 pdfium
ninja: Entering directory `out\Release86'
[3284/3284] LINK(DLL) pdfium.dll pdfium.dll.lib pdfium.dll.pdb
要安装带缓解的 mfc。很多第三方库用到了 mfc,能装的都装一下吧。
pdfium\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2019
gn help gen
gn gen build/Debug
gn gen --ide=vs2019 --sln=pdfium build/Debug --args="use_goma=false is_debug=true pdf_use_skia=false pdf_use_skia_paths=false pdf_enable_xfa=false pdf_enable_v8=false pdf_is_standalone=true is_component_build=true clang_use_chrome_plugins=false target_cpu=\"x86\""
gn gen --ide=xcode --workspace=pdfium build/Debug --args="is_debug=true"
gn args build/Debug
gn args build/Debug --list --short
gn args build/Debug --list=target_cpu
gn help host_os
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2019
C:\kSource\kpdf\google\pdfium>gn gen --ide=vs2019 --sln=pdfium build/Debug --args="use_goma=false is_debug=true pdf_use_skia=false pdf_use_skia_paths=false pdf_enable_xfa=false pdf_enable_v8=false pdf_is_standalone=true is_component_build=true clang_use_chrome_plugins=false target_cpu=\"x86\""
Generating Visual Studio projects took 133ms
Done. Made 154 targets from 94 files in 25889ms
要多编译几次,感觉 146 个工程,没有做项目依赖。
# 获取 Crashpad 代码
fetch crashpad
# 同步第三方库
gclient sync
# 生成 VS 工程文件
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_GENERATORS=msvs-ninja,ninja
set DEPOT_TOOLS_UPDATE=0
python crashpad/build/gyp_crashpad.py
# 编译
ninja -C out/Debug