在Windows 32位上构建Skia

时间:2017-02-16 16:07:05

标签: skia

我在this link之后在Windows上构建Skia。

对于Windows x64,构建非常顺利。但不是32位。

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

  

" C:\ Programs"不是一条有效的道路。

2)我尝试在IDE中生成sln文件并进行构建(这是链接中提到的替代方法)。但是,我甚至无法通过这种方式编译x64版本(ninja的大量非零退出代码,没有观察到其他消息)。

3)我尝试使用网站声称的工具链"支持32位版本的唯一方法"。使用以下命令下载工具链(在skia目录中执行):

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

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

  

以xxxxxxxxxxxxxxxx

登录      

AccessDeniedException:403调用者没有对存储桶skia-buildbots的storage.objects.list访问。

我不仅限于它的构建方式,只要它产生" libs"为了我。但是对于一个拥有如此多外部依赖关系的大型项目,我并不认为按照自己的方式自我酿造很容易。

3 个答案:

答案 0 :(得分:0)

我找到了一个解决方案:

  1. 打开out\Release\toolchain.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
  4. 通过这种方式,我们使用工具链,直接调用cl.exeml.exe link.exe命令(可从PATH环境访问)

答案 1 :(得分:0)

基于@dacap的其他解决方案。但我改为编辑gn configure。

更改文件 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 && "
#}
.....

答案 2 :(得分:0)

似乎(从skia m67开始)@WinCloud的修复部分合并到上游(但仍然必须删除env_setup部分)。

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

包含构建"没有系统库的.bat文件"使用Clang进行配置(因为自述文件明确指出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