在 Windows 32 位上构建 Skia

  • 本文关键字:构建 Skia Windows skia
  • 更新时间 :
  • 英文 :


我正在按照这个链接在Windows上构建Skia。

对于Windows x64,构建非常流畅。但不适用于 32 位。

1)我尝试指定target_cpu = "x86"而不是target_cpu = "x64",gn gen工作正常,但忍者抛出错误,抱怨视觉工作室的路径包含空格。它具有类似于以下内容的各种错误:

"C:\程序"不是有效的路径。

2)我尝试生成sln文件并从IDE中构建(这是链接中提到的替代方法)。但是,我什至无法让 x64 版本以这种方式编译(来自忍者的很多非零退出代码,没有观察到进一步的消息)。

3)我尝试使用该网站声称是"支持32位构建的唯一方法"的工具链。工具链将使用以下命令下载(在skia dir中执行):

python infra/bots/assets/win_toolchain/download.py -t C:/toolchain

我设法解决了大量错综复杂的问题(古蒂尔冲突、.py扩展遗漏、路径变量、谷歌云服务),我现在陷入了困境:

以 xxxxx 身份登录

AccessDeniedException: 403 Caller 没有 storage.objects.list 对 bucket skia-buildbots 的访问权限。

我不局限于它的构建方式,只要它为我生成"库"。但是对于一个具有如此多外部依赖项的大型项目,我认为以自己的方式酿造并不容易。

我找到的一个解决方案:

  1. 打开outReleasetoolchain.ninja文本文件(或特定于您的配置的toolchain.ninja)
  2. 删除以下字符串(您可以在文本编辑器中使用空字符串的"替换文本"):

    C:/Program Files (x86)/Microsoft Visual Studio 14.0/win_sdk/bin/SetEnv.cmd /x86 && C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64_x86/
    

    从任何地方(如果您使用了x86,因为x64字符串可能不同)

  3. 并像往常一样使用ninja -C out/Release dm

通过这种方式,我们使用的是工具链,其中cl.exe,直接调用ml.exelink.exe命令(可从PATH环境中访问)

另一种基于@dacap的解决方案。但我编辑了 gn 配置。

更改文件 gn/toolchain/BUILD.gn

...   
if (msvc == 2015) {
bin = "$win_vc/bin/amd64"
} else {
bin = "$win_vc/Tools/MSVC/$win_toolchain_version/bin/HostX64/$target_cpu"
}
env_setup = ""
if (target_cpu == "x86") {
# Toolchain asset includes a script that configures for x86 building.
# We don't support x86 builds with local MSVC installations.
env_setup = "cmd /c $win_sdk/bin/SetEnv.cmd /x86 && "
}
...

...
if (msvc == 2015) {
if (target_cpu == "x86") {
bin = "$win_vc/bin"
} else {
bin = "$win_vc/bin/amd64"
}
} else {
bin = "$win_vc/Tools/MSVC/$win_toolchain_version/bin/HostX64/$target_cpu"
}
env_setup = ""
#if (target_cpu == "x86") {
#  # Toolchain asset includes a script that configures for x86 building.
#  # We don't support x86 builds with local MSVC installations.
#  env_setup = "cmd /c $win_sdk/bin/SetEnv.cmd /x86 && "
#}
.....

似乎(截至skia m67)@WinCloud的修复程序已部分合并到上游(但仍必须删除env_setup部分)。

但是,正如评论中所述 - 它将在 OpenGL 初始化期间崩溃。 我已经修复了所有这些(至少到演示应用程序可以运行的地步),作为一点额外的 - 修复了与Visual Studio调试配置的.lib兼容性。

其中包括使用 Clang 构建"无系统库"配置的.bat文件(如自述文件明确指出 VC++ 构建可能存在性能问题)。要使用这些,只需从 https://releases.llvm.org/download.html 下载最新的LLVM,并将其安装到默认位置(使用6.0.0测试)。

如果需要 DLL 运行时链接,则必须编辑 gn/BUILD.gn 文件 - 默认情况下添加/MD 标志并将/MTd 更改为/MDd 进行调试。

这是基于 chrome/m67 分支的补丁:

https://gist.github.com/Alexx999/39eae9182eecaa3dc06e73fdb3a1e7d9

相关内容

  • 没有找到相关文章

最新更新