网站建设咨询公司排名,如何查询在建项目,可信网站认证有用吗,网站制作有哪些方面介绍
Skia图形库可来绘画文本,几何图形和图像:
带透视的3x3矩阵*抗锯齿,透明度,滤镜*着色器,传输模式,掩码过滤,路径特效,子像素文本 Skia的设备后端目前包括: 光栅*OpenGL*PDF*XPS*SVG*及(用来录制,然后回放到另一个Canvas中的)图片
构建
确保已先按说明下载Skia Skia用GN…介绍
Skia图形库可来绘画文本,几何图形和图像:
带透视的3x3矩阵*抗锯齿,透明度,滤镜*着色器,传输模式,掩码过滤,路径特效,子像素文本 Skia的设备后端目前包括: 光栅*OpenGL*PDF*XPS*SVG*及(用来录制,然后回放到另一个Canvas中的)图片
构建
确保已先按说明下载Skia Skia用GN来配置构建.可参考这篇来构建
is_official_build和第三方依赖项
Skia的多数用户应该设置is_official_buildtrue,而开发者应按false为默认值.
优化版本没有调试符号,用普通库搜索路径动态链接到其第三方依赖项.
相比下,面向开发者的默认版本是未优化构建,有完整的调试符号,所有第三方依赖项从源码构建并嵌入到libskia中.这就是所有手动和自动测试方式.
Skia提供了多种使用第三方库的功能,如libpng,libwebp或libjpeg-turbo来解码图像,或ICU和sftnly来解码子集字体.
所有这些第三方依赖项都是可选的,并可通过GN像对foo,用skia_use_foo参数来控制.
如果启用了skia_use_foo,则启用skia_use_system_foo通过把它链接到系统路径上的头文件和库中,来生成Skia.默认,is_official_buildtrue启用所有skia_use_system_foo. 如果需要,可用extra_cflags和extra_ldflags添加包含路径或库路径.
支持和首选的编译器
虽然Skia应用GCC,MSVC和其他编译器编译,但使用Clang编译Skia软件后端中的许多例程时,运行速度最快.
如果依赖软光栅化,图像解码或颜色空间转换,并使用Clang外的编译器编译Skia,会看到性能明显下降. Skia使用C语言功能(使用-stdc17标志编译),因此需要兼容C17的编译器.
--argsccclang cxxclang为使用指定的cc和cxx调用.
如果未在gn参数中指定cc和cxx,则Skia默认为cc和c.在许多平台上,这一般是默认的GCC,而不是Clang.
快速入门
运行gn gen以生成构建文件.按gn gen的参数,传递构建目录名,并可选地传递--args来配置构建类型.
要在名为out/Static的构建目录中,按静态库构建Skia:
bin/gn gen out/Static --argsis_official_buildtrue要在名为out/Shared的构建目录中,按共享库(DLL)构建Skia,请如下:
bin/gn gen out/Shared --argsis_official_buildtrue is_component_buildtrue如果没有bin/gn,请确保已运行:
python3 tools/git-sync-deps
//窗口下,用python.exe可用构建参数列表,查看gn/skia.gni,或运行:
bin/gn args out/Debug --list
//窗口下,用gn.exeGN允许多个构建目录共存;每个版本都可按需单独配置.如:
bin/gn gen out/Debug
bin/gn gen out/Release --argsis_debugfalse
bin/gn gen out/Clang --argsccclang cxxclang
bin/gn gen out/Cached --argscc_wrapperccache
bin/gn gen out/RTTI --argsextra_cflags_cc[-frtti]生成构建文件后,运行Ninja来编译和链接Skia:
ninja -C out/Static如果缺少某些头文件,请安装相应依赖项:
tools/install_dependencies.sh要拉取新更改并重新生成,请如下:
git pull
python tools/git-sync-deps
ninja -C out/Static安卓
要构建适合安卓的Skia,需要AndroidNDK.
如果没有NDK但有权访问CIPD,则可用以下命令之一来取我们的机器人使用的NDK:
./bin/fetch-sk
./bin/sk asset download android_ndk_linux /tmp/ndk # Linux上
./bin/sk asset download android_ndk_darwin /tmp/ndk # Mac上
./bin/sk.exe asset download android_ndk_windows C:/ndk # Windows上生成GN构建文件时,传递路径给ndk和期望target_cpu:
bin/gn gen out/arm --argsndk/tmp/ndk target_cpuarm
bin/gn gen out/arm64 --argsndk/tmp/ndk target_cpuarm64
bin/gn gen out/x64 --argsndk/tmp/ndk target_cpux64
bin/gn gen out/x86 --argsndk/tmp/ndk target_cpux86其他参数,如is_debug和is_component_build继续工作.调整ndk_api可让你访问较新的安卓功能,如Vulkan. 要在安卓设备上测试,请推送二进制文件和资源过来,然后照常运行.如发现bin/droid很方便.
ninja -C out/arm64
adb push out/arm64/dm /data/local/tmp
adb push resources /data/local/tmp
adb shell cd /data/local/tmp; ./dm --src gm --config glChrome操作系统
要为armChromeOS设备交叉编译Skia,需要如下条件: 1,Clang4或更高版本 2,一个armhf sysroot 3,要链接的arm,chromebook上的(E)GLlib文件. 要为x86ChromeOS设备编译Skia,只需要Clang和lib文件.
如果有权访问CIPD,则可如下取这些内容:
./bin/sk asset download clang_linux /opt/clang
./bin/sk asset download armhf_sysroot /opt/armhf_sysroot
./bin/sk asset download chromebook_arm_gles /opt/chromebook_arm_gles
./bin/sk asset download chromebook_x86_64_gles /opt/chromebook_x86_64_gles如果无权使用这些资产,见armhf_sysroot,chromebook_arm_gles和chromebook_x86_64_gles的README.md文件,了解如何创建这些资产. 1 2 3
文件就位后,生成类似以下内容的GN参数:
//#ARM
cc /opt/clang/bin/clang
cxx /opt/clang/bin/clang
extra_asmflags [--targetarmv7a-linux-gnueabihf,--sysroot/opt/armhf_sysroot/,-marcharmv7-a,-mfpuneon,-mthumb,
]
extra_cflags[--targetarmv7a-linux-gnueabihf,--sysroot/opt/armhf_sysroot,-I/opt/chromebook_arm_gles/include,-I/opt/armhf_sysroot/include/,-I/opt/armhf_sysroot/include/c/4.8.4/,-I/opt/armhf_sysroot/include/c/4.8.4/arm-linux-gnueabihf/,-DMESA_EGL_NO_X11_HEADERS,-funwind-tables,
]
extra_ldflags[--sysroot/opt/armhf_sysroot,-B/opt/armhf_sysroot/bin,-B/opt/armhf_sysroot/gcc-cross,-L/opt/armhf_sysroot/gcc-cross,-L/opt/armhf_sysroot/lib,-L/opt/chromebook_arm_gles/lib,--targetarmv7a-linux-gnueabihf,
]
target_cpuarm
skia_use_fontconfig false
skia_use_system_freetype2 false
skia_use_egl true
//# x86_64
cc /opt/clang/bin/clang
cxx /opt/clang/bin/clang
extra_cflags[-I/opt/clang/include/c/v1/,-I/opt/chromebook_x86_64_gles/include,-DMESA_EGL_NO_X11_HEADERS,-DEGL_NO_IMAGE_EXTERNAL,
]
extra_ldflags[-stdliblibc,-fuse-ldlld,-L/opt/chromebook_x86_64_gles/lib,
]
target_cpux64
skia_use_fontconfig false
skia_use_system_freetype2 false
skia_use_egl true如常,使用ninja编译dm(或其他可执行文件). 通过ssh推送二进制文件到chromebook,并使用glesGPU配置如常运行dm.
默认,按noexec标记大多数Chromebook的主目录分区.为避免拒绝权限错误,请如下:
sudo mount -i -o remount,exec /home/chronosMac
Mac用户想传递--idexcode给bin/gn gen来生成Xcode项目. 默认,MacGN版本假定使用IntelCPU.如果要针对AppleSilicon(M1及更高版本)构建,请添加一个gn参数来设置target_cpuarm64:
bin/gn gen out/AppleSilicon --argstarget_cpuarm64Google员工应参考go/skia-corp-xcode.
Python
Apple提供的Python版本已过时了几个版本,而且周知,其与构建系统的交互很差.建议从https://www.python.org/downloads/安装最新的Python正式版本.然后运行Applications/Python3.11/InstallCertificates.command.
iOS系统
运行GN以生成构建文件.设置target_osios以针对iOS构建.默认值为target_cpuarm64.要使用iOS模拟器,请设置ios_use_simulatortrue并设置target_cpu为Mac架构. 在IntelMac上,单独设置target_cpux64也会针对iOS模拟器.
bin/gn gen out/ios64 --argstarget_osios
bin/gn gen out/ios32 --argstarget_osios target_cpuarm
bin/gn gen out/iossim-apple --argstarget_osios target_cpuarm64 ios_use_simulatortrue
bin/gn gen out/iossim-intel --argstarget_osios target_cpux64这还会打包(并为设备签名)iOS测试二进制文件.默认为Google签名标识和预配置文件.要使用其他参数,请设置GN的skia_ios_identity参数,以匹配代码签名标识,并及skia_ios_profile来匹配预配置文件名,如
skia_ios_identity.*Jane Doe.*
skia_ios_profileiPad Profile可在命令行上键入security find-identity来查找标识列表.在Apple开发者网站上提供预配置文件名. 或,skia_ios_profile也可以是mobileprovision文件的绝对路径. 如果缺少Google签名标识或配置文件,则要通读go/appledev.
对已签名的包,用ios-deploy来安装和运行它们:
ios-deploy -b out/Debug/dm.app -d --args --match foo或,可传递--idexcode给bin/gn gen来生成Xcode项目.如果使用的是Xcode版本10或更高版本,则可能需要转到项目设置,并验证构建系统:是否设置为LegacyBuildSystem.
可设置ios_min_target参数来部署早于当前SDK设备的操作系统:
ios_min_target major.minor其中major.minor是设备上的iOS版本,如12.0或11.4.
窗口
Skia可用VS2017或2019在Windows上构建.如果GN找不到,它会打印一条错误消息.此时,可用win_vc来传递VC路径给GN.
可用免费的VS2017或2019生成工具编译Skia. 机器使用打包的2019年工具链,Google员工可如下下载:
./bin/sk.exe asset download win_toolchain C:/toolchain然后,可设置GN参数,来传递VC和SDK路径给GN:
win_vc C:\toolchain\VC
win_sdk C:\toolchain\win_sdk该工具链是用target_cpux86设置支持32位构建的唯一方式.
Skia构建假定PATHEXT环境变量包含.EXE.
强烈推荐:用clang-cl构建
Skia使用仅在用clang构建Skia时优化而生成的代码.其他编译器则是通用的未优化代码.
光设置gn的cc和cxx参数,并不能用clang-cl构建.在窗口上会忽略这些变量.相反,设置clang_win变量为LLVM安装目录. 如果把从在此下载的构建预的LLVM安装到如下:
clang_win C:\Program Files\LLVM遵循标准的Windows路径规范,而不是MinGW约定(如,C:\Program Files\LLVM而不是/c/ProgramFiles/LLVM).
VS方法
如果使用VS,则可传递--idevs给bin/gngen以生成all.sln.在配置的GN目录中指定该方法,且只会构建/运行该配置.
如果要支持多个GN配置的VS方法,可用助手脚本.它要求所有GN目录都在out目录中.首先,如常创建所有GN配置. 对每个bin/gn gen,传递--idevs.然后:
python3 gn/gn_meta_sln.py
//窗口用,python.exe这样创建了新的特化输出目录和out/sln/skia.sln方法文件.它为每个GN配置提供一个方法配置,并支持构建和运行它. 它还根据所选方法配置中的预处理定义,调整非活动代码块的语法高亮.
窗口ARM64
ARM上有对Windows10的早期实验性支持.这目前需要(最新版本的)MSVC,及VS安装程序中ARM64单个组件的VisualC编译器和库. 对Google员工来说,win_toolchain资产包括ARM64编译器. 要使用该工具链,请设置target_cpuGN参数为arm64.注意,ARM上的Windows10不支持OpenGL,因此会存根Skia的GL后端,而无法正常工作.支持ANGLE:
bin/gn gen out/win-arm64 --argstarget_cpuarm64 skia_use_angletrue这生成一个可在DM中使用软件或ANGLE后端的Skia版本.Viewer仅在使用--backendangle启动时有效,因为软件后端试使用OpenGL来显示窗口内容.
CMake
添加了一个GN-to-CMake转换器,主要针对喜欢CMake项目描述的IDE.
bin/gn gen out/config --idejson --json-ide-script../../gn/gn_to_cmake.py