新闻详情

新闻详情

首页 / 资讯中心 / 详情

Windows系统中使用MinGW-W64(gcc/g++或LLVM)编译Skia源码的方法

发布时间:2026/9/29 2:54:40来源:尧图网络
Windows系统中使用MinGW-W64(gcc/g++或LLVM)编译Skia源码的方法
Windows系统中使用MinGW-W64(gcc/g或LLVM)编译Skia源码的方法修改日期2026-02-10操作系统Windows 11 64位版本编译器MinGW-W64 gcc/g or LLVM-MinGW说明1本文档介绍Windows系统中使用MinGW-W64(gcc/g)或者LLVM-MinGW编译Skia源码的方法说明2该编译Skia源码的方法是为了适配nim_duilib项目使用Skia库如果用于其他库使用可能需要修改编译参数说明3获取skia源码后需要更新部分源码更新方法见后续文档否则编译无法通过。使用了一个第三方库expat说明4操作过程中假设源码的根目录是D:\develop目录如果使用其他目录可替换为实际的目录。一、准备工作安装必备的软件安装python v3.11.x如果本机已经安装了python v3可以跳过这个步骤python的主版本需要是v3需要添加到Path环境变量以便于能够直接用python.exe启动python程序1首先安装python2在Windows的设置里面关闭python.exe和python3.exe的应用执行别名否则编译skia的脚本执行有问题。Windows设置入口设置 - 应用 - 高级应用设置 - 应用执行别名3到python.exe所在目录中复制一份python.exe改名为python3.exe: 确保命令行参数中可以访问到python3.exe4验证确保命令行参数中可以访问到python.exe和python3.exe安装git如果本机已经安装了git可以跳过这个步骤git需要添加到Path环境变量确保命令行参数中可以访问到git.exe1Git For Windows: 2.44版本2TortoiseGit2.15版本获取MinGW-w64编译环境如果本机已经安装了MinGW-w64可以跳过这个步骤1下载网址https://www.mingw-w64.org/downloads/2mingw64 LLVM推荐下载地址https://github.com/mstorsjo/llvm-mingw/releases下载链接https://github.com/mstorsjo/llvm-mingw/releases/download/20250430/llvm-mingw-20250430-ucrt-x86_64.zip下载后解压到目录C:\mingw64目录gcc/g最终目录为C:\mingw64\llvm-mingw-20250430-ucrt-x86_64\bin3mingw64 gcc/g下载地址https://github.com/niXman/mingw-builds-binaries/releases下载链接https://github.com/niXman/mingw-builds-binaries/releases/download/15.1.0-rt_v12-rev0/x86_64-15.1.0-release-win32-seh-ucrt-rt_v12-rev0.7z下载后解压到目录C:\mingw64目录gcc/g最终目录为C:\mingw64\x86_64-15.1.0-release-win32-seh-ucrt-rt_v12-rev0\mingw64\bin二、使用脚本自动编译推荐该脚本自动完成相关源码下载和编译工作。选定一个工作目录创建一个脚本build.bat将下面已经整理好脚本复制进去保存文件。脚本文件内容如下echo OFF set retry_delay10 :retry_clone_skia_compile if not exist .\skia_compile ( git clone https://github.com/rhett-lee/skia_compile ) else ( git -C ./skia_compile pull ) if %errorlevel% neq 0 ( timeout /t %retry_delay% nul goto retry_clone_skia_compile ) .\skia_compile\mingw64\build_skia_all_in_one.bat进入命令行控制台设置PATH环境变量如果编译环境已经添加到PATH变量可忽略这个步骤SET PATH%PATH%;C:\mingw64\llvm-mingw-20250430-ucrt-x86_64\bin最后运行该脚本.\build.bat编译时如果获取skia_compile代码失败可以多重试几次。编译完成的库文件在工作目录的skia/out子目录中按编译选项放在相应的子目录。三、手动编译过程第1步获取skia源码和修改的源码获取skia源码1mkdir D:\develop2cd /d D:\develop3git clone https://github.com/google/skia.git4git checkout 34aa71b8bee4648a442b7125680232d803374f19应用修改的代码1cd /d D:\develop2git clone https://github.com/rhett-lee/skia_compile下载源码和文档3 解压skia.2026-02-10.src.zip到目录skia.2026-02-10.src中4 将目录skia.2026-02-10.src中的所有内容复制到D:\develop\skia目录中覆盖所有同名文件5 注意事项该修改的代码的SHA-1值需要比对如果不是这个版本的代码直接覆盖可能有问题。第2步编译skia编译器mingw64 llvm推荐运行cmd.exe命令行环境设置PATH环境变量SET PATH%PATH%;C:\mingw64\llvm-mingw-20250430-ucrt-x86_64\binclang -v进入skia源码目录cd /d D:\develop\skia编译skia静态库mingw64 llvmx64.\bin\gn.exe gen out/mingw64-llvm.x64.release --argstarget_cpu\x64\ cc\clang\ cxx\clang\ is_trivial_abifalse is_official_buildtrue skia_use_libwebp_encodefalse skia_use_libwebp_decodefalse skia_use_libpng_encodefalse skia_use_libpng_decodefalse skia_use_zlibfalse skia_use_libjpeg_turbo_encodefalse skia_use_libjpeg_turbo_decodefalse skia_enable_fontmgr_win_gdifalse skia_use_icufalse skia_use_expatfalse skia_use_xpsfalse skia_enable_pdffalse skia_use_wuffsfalse skia_enable_svgtrue skia_use_expattrue skia_use_system_expatfalse is_debugfalse extra_cflags[\-DSK_DISABLE_LEGACY_PNG_WRITEBUFFER\].\bin\ninja.exe -C out/mingw64-llvm.x64.release编译skia静态库mingw64 llvmx86.\bin\gn.exe gen out/mingw64-llvm.x86.release --argstarget_cpu\x86\ cc\clang\ cxx\clang\ is_trivial_abifalse is_official_buildtrue skia_use_libwebp_encodefalse skia_use_libwebp_decodefalse skia_use_libpng_encodefalse skia_use_libpng_decodefalse skia_use_zlibfalse skia_use_libjpeg_turbo_encodefalse skia_use_libjpeg_turbo_decodefalse skia_enable_fontmgr_win_gdifalse skia_use_icufalse skia_use_expatfalse skia_use_xpsfalse skia_enable_pdffalse skia_use_wuffsfalse skia_enable_svgtrue skia_use_expattrue skia_use_system_expatfalse is_debugfalse extra_cflags[\-DSK_DISABLE_LEGACY_PNG_WRITEBUFFER\].\bin\ninja.exe -C out/mingw64-llvm.x86.release第2步编译skia编译器mingw64 gcc/g运行cmd.exe命令行环境设置PATH环境变量SET PATH%PATH%;C:\mingw64\x86_64-15.1.0-release-win32-seh-ucrt-rt_v12-rev0\mingw64\bing -v进入skia源码目录cd /d D:\develop\skia编译skia静态库mingw64 gcc/gx64.\bin\gn.exe gen out/mingw64-gcc.x64.release --argstarget_cpu\x64\ cc\gcc\ cxx\g\ is_trivial_abifalse is_official_buildtrue skia_use_libwebp_encodefalse skia_use_libwebp_decodefalse skia_use_libpng_encodefalse skia_use_libpng_decodefalse skia_use_zlibfalse skia_use_libjpeg_turbo_encodefalse skia_use_libjpeg_turbo_decodefalse skia_enable_fontmgr_win_gdifalse skia_use_icufalse skia_use_expatfalse skia_use_xpsfalse skia_enable_pdffalse skia_use_wuffsfalse skia_enable_svgtrue skia_use_expattrue skia_use_system_expatfalse is_debugfalse extra_cflags[\-DSK_DISABLE_LEGACY_PNG_WRITEBUFFER\].\bin\ninja.exe -C out/mingw64-gcc.x64.release编译skia静态库mingw64 gcc/gx86.\bin\gn.exe gen out/mingw64-gcc.x86.release --argstarget_cpu\x86\ cc\gcc\ cxx\g\ is_trivial_abifalse is_official_buildtrue skia_use_libwebp_encodefalse skia_use_libwebp_decodefalse skia_use_libpng_encodefalse skia_use_libpng_decodefalse skia_use_zlibfalse skia_use_libjpeg_turbo_encodefalse skia_use_libjpeg_turbo_decodefalse skia_enable_fontmgr_win_gdifalse skia_use_icufalse skia_use_expatfalse skia_use_xpsfalse skia_enable_pdffalse skia_use_wuffsfalse skia_enable_svgtrue skia_use_expattrue skia_use_system_expatfalse is_debugfalse extra_cflags[\-DSK_DISABLE_LEGACY_PNG_WRITEBUFFER\].\bin\ninja.exe -C out/mingw64-gcc.x86.release四、资源链接Skia的编译文档库如需获取最新版本的文档请点击访问skia_compilenim_duilib界面库的代码库请点击访问nim_duilibnim_duilib 是一款基于C开发的跨平台界面库源于经典的 duilib 界面库并进行了深度优化与功能扩展支持Windows/Linux/macOS/FreeBSD平台支持的Linux系统包括OpenEuler、OpenKylin、UbuntuKylin、统信UOS、中科方德、Ubuntu、Fedora、Debian等专注于简化桌面应用的高效开发。其设计融合了DirectUI理念通过XML描述界面布局实现视觉与逻辑的分离显著提升开发灵活性与维护性。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

GitHub热榜观察指南:四步评估识别优质开源项目 2026/9/29 7:36:01

GitHub热榜观察指南:四步评估识别优质开源项目

1. 今日热榜的一手观察1.1 榜单构成与临场感受2026年9月24日,像往常一样打开GitHub热榜,先扫一眼整体构成。这天的榜单里,AI相关项目依然占了接近一半,但有意思的是,纯模型权重和框架层的热度稍微降了一点,…

阅读更多 →
逻辑分析仪调试全解:采样率、协议解码与Saleae/PulseView 2026/9/29 7:36:01

逻辑分析仪调试全解:采样率、协议解码与Saleae/PulseView

数字电路调试里最让人抓狂的,不是没有思路,而是没有眼睛。代码层面你盯着的是寄存器和时序图,板子跑起来之后你面对的却是一根根测不出所以然的高低电平,中间那层信息是断的。逻辑分析仪就是把这层断层接上的东西:它把…

阅读更多 →
dependency-cruiser 匿名化路径元素算法:anonymizePathElement 原理与 anon 报告器实战 2026/9/29 7:36:01

dependency-cruiser 匿名化路径元素算法:anonymizePathElement 原理与 anon 报告器实战

开发工具静态分析代码质量 【免费下载链接】dependency-cruiser Validate and visualize dependencies. Your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD. 项目地址: https://gitcode.com/gh_mirrors/de/dependency-cruiser 点击查看 免费下…

阅读更多 →
VS Code Copilot三Tab拆解:Chat、Code与Agent计费 2026/9/29 7:36:01

VS Code Copilot三Tab拆解:Chat、Code与Agent计费

最近在 VS Code 里折腾 GitHub Copilot 新版界面的时候,发现不少朋友对那几个 Tab 入口一头雾水。尤其是项目群里流传的那句"Copilot 三 Tab 拆解:Code 底层同 GitHub Copilot,agent 能力全部走 UBB 计费",很多人看了之…

阅读更多 →
C#事件详解:从委托底层到实战应用与避坑指南 2026/9/29 7:35:55

C#事件详解:从委托底层到实战应用与避坑指南

写C#这么多年,我经常被问到“事件到底是什么”,尤其是刚入行的同事,看过几篇教程能照着敲出和事件处理器,但一问他“事件和委托有什么区别”“为什么事件不能像字段一样随便赋值”,人就懵了。说实话,事件这…

阅读更多 →
汽车旋变解码实战:原理、软硬方案与调试全解析 2026/9/29 7:35:42

汽车旋变解码实战:原理、软硬方案与调试全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉