如何将SKIA库的C 项目链接到Xcode
How to link the Skia library for a C++ project with Xcode
skia是图形库(skia.org(。文档说明了如何通过git克隆项目后如何构建库。但是该文档尚不清楚该日期,如何使用使用SKIA库的Xcode构建C 项目。
我尝试了文档中写的所有内容,但找不到如何在C Xcode项目中链接Skia库的方法。
如何解决问题:
添加库搜索路径
此屏幕截图显示了如何以及在何处执行这些步骤:
添加Skia库路径图像
- 在项目导航器中,单击项目的图标。
- 在项目导航器旁边主窗口部左侧的面板中:再次单击您的项目图标以打开项目全局信息和设置。
- 在主窗口部门的导航栏中:单击"构建设置"
- 确保以下视图过滤器设置为" ALL"并"合并"因此,您不会错过任何设置。
- 在选项搜索表中输入"库搜索路径"要找到"库搜索路径"的条目"
- 双克里克(Double Klick(条目"库搜索路径"要接收可以在其中指定应链接到库的搜索路径的弹出窗口。
- 在弹出窗口中,双击一个空行,输入您之前构建的
libskia.a
库文件的路径。(注意:我使用静态构建选项来创建静态库。如果要链接动态.so
库,则设置略有不同(
静态链接与libskia.a
应与以前的步骤进行以下步骤。
- 在选项搜索表中输入"其他链接"要查找"其他链接器标志"的条目"
- 在构建项目时,将标志
-lskia
添加到静态链接libskia.a
库。
确保标题包括路径
应与以前的步骤进行以下步骤。
- 在选项搜索表中输入"标题搜索"要找到"标题搜索路径"的条目"
- 双克里克(Double Klick(入口"标题搜索路径"要接收可以在其中指定应包括的标题文件的搜索路径。添加" [通往SKIA目录的路径(/Skia/include"并在"递归"的右侧设置搜索模式。对于下面的示例应该足够。
添加Skia的Mac OSX特定依赖项
应与以前的步骤进行以下步骤。此屏幕截图显示了在哪里执行以下步骤:
添加Skia Mac OSX特定依赖项图像
- 在项目导航器旁边的主窗口部门左侧的面板中:单击目标以打开目标特定信息和设置。
- 在主窗口部门的导航栏中:单击"构建阶段"
- 在"链接二进制链接与库"下,单击
+
符号。 - 添加以下MAC OSX特定SKIA依赖性:
- coreservices.framework
- coregraphics.framework
- coretext.framework
- corefoundation.framework
testcode
您可以使用以下示例代码测试这些设置:
#include "SkSurface.h"
#include "SkPath.h"
#include "SkCanvas.h"
#include "SkData.h"
#include "SkImage.h"
#include "SkStream.h"
int main (int argc, char * const argv[]) {
// hard coded example program parameters
const char filePath[] = "/Users/[yourUserName]/Desktop/skiaTestImage.png";
int width = 256;
int height = 256;
// create canvas to draw on
sk_sp<SkSurface> rasterSurface = SkSurface::MakeRasterN32Premul(width, height);
SkCanvas* canvas = rasterSurface->getCanvas();
// creating a path to be drawn
SkPath path;
path.moveTo(10.0f, 10.0f);
path.lineTo(100.0f, 0.0f);
path.lineTo(100.0f, 100.0f);
path.lineTo(0.0f, 100.0f);
path.lineTo(50.0f, 50.0f);
path.close();
// creating a paint to draw with
SkPaint p;
p.setAntiAlias(true);
// clear out which may be was drawn before and draw the path
canvas->clear(SK_ColorWHITE);
canvas->drawPath(path, p);
// make a PNG encoded image using the canvas
sk_sp<SkImage> img(rasterSurface->makeImageSnapshot());
if (!img) { return 1; }
sk_sp<SkData> png(img->encodeToData());
if (!png) { return 1; }
// write the data to the file specified by filePath
SkFILEWStream out(filePath);
(void)out.write(png->data(), png->size());
return 0;
}
附录
用端子编译
您可以通过编写制作文件或直接在终端中调用G 编译器来完成相同的操作。这是一个示例:
g++ -std=c++11 main.cpp -framework CoreFoundation -framework
CoreGraphics -framework CoreText -framework CoreServices -
L[path_to_your_Skia_library]/skia/out/Static_m58 -lskia -
I[path_to_your_Skia_library]/skia/include/core -
I[path_to_your_Skia_library]/skia/include/config -
I[path_to_your_Skia_library]/skia/include/utils -
I[path_to_your_Skia_library]/skia/third_party/externals/sdl/include -
I[path_to_your_Skia_library]/skia/include/gpu -
I[path_to_your_Skia_library]/skia/src/gpu -o main
我如何找到解决方案
找到所有这些东西花了我大约12个小时。如果您对最终导致解决方案的步骤感兴趣,我将在此处解释。让我知道。
相关文章:
- CMake 项目链接静态库
- 尝试使用 gradle 构建指向静态库的 c++ 项目链接时找不到头文件
- 将错误GoogleMock与我在linux下的C++项目链接
- 将OpenBLAS与Qt Creator项目链接
- 从大型 github 项目链接共享库
- 将TBB库与QTCreator与CMAKE项目链接
- 如何与Libm.so和libdl.so与我的Bazel项目链接
- 将C++项目与 Visual Studio 中的窗体项目链接
- GTEST测试项目链接链接到其他可执行文件
- Visual Studio,将项目链接在一起并进行测试
- 如何在Xcode4上从头开始构建C++项目-链接现有和新的外部库
- 我怎么能说视觉工作室将库与我的项目链接起来
- 添加类后项目链接错误
- CMake:从外部项目链接共享C++对象会生成具有相对路径的二进制文件,而不是绝对路径
- Netbeans/C++:将2个项目链接在一起(可执行文件/动态库)
- 裸机目标与cmake项目链接错误
- 使用lua lib的Xcode c++项目链接错误
- 试图从另一个项目链接类时出现链接器错误
- 如何将code::块设置为在目标链接器选项之前链接项目链接器选项
- 无法将一个项目的头和 CPP 文件与另一个项目链接 LNK2019:未解决的外部符号错误