cairo  是一个免费的矢量绘图软件库,它可以绘制多种输出格式。cairo 支持许多平台,如  Linux、BSD、OSX等,当然,还有  Windows。

cairo 官网提供了在 windows 下的编译方法,详情可戳这里。尽管它给出了看起来很详细的步骤,但在实际编译中,你有可能会遇到各种各样的问题。

我们先从官网的步骤开始。

下载并编译 zlib .

下载并编译 libpng .

安装 MozillaBuild编译环境。( 注意安装路径下不要有空格) .

找到 MozillaBuild 的安装路径,找到 VC++ 对应版本的启动脚本,如start-shell-msvc2015.bat,按官网给出的方式进行修改,定义出 zlib \ libpng 等 lib、include 等的路径 .

运行修改后的 bat,到 pixman 所在路径下,运行 make 命令进行编译 .

make -f Makefile.win32 CFG=release

1

make -f Makefile.win32 CFG=release

进行到这一步的时候,基本就无法进行下去了。因为在这一步开始就会出现各种各样的错误

下面我们将从这里开始,一步一步完成cairo的编译。

1.  修改MozillaBuild脚本:

打开 VS 版本对应的 bat 文件,注意MOZ_MSVCBITS 的值 :这里将值改为 32。我们将编译 32 位版本。

打开 start-shell.bat 。在 “REM Reset some env vars and set some others.” 内容下方,按照官网上给出的方式,指定 zlib, libpng 的 lib 和 include 所在路径。

如果你的PC是 64 位,那么 MozillaBuild  会默认使用 64 的 VS 进行编译,可能会引发平台不匹配的问题。此时需要将 “REM Prepend MSVC paths.”  下面的

SET TOOLCHAIN=64-bit cross-compile

1

SET TOOLCHAIN=64-bit cross-compile

改为

SET TOOLCHAIN=32-bit cross-compile

1

SET TOOLCHAIN=32-bit cross-compile

2.  修改 pixman-version.h.in

进入 pixman/pixman 文件夹下,修改 @PIXMAN_VERSION_MAJOR@ ,  @PIXMAN_VERSION_MINOR@  , @PIXMAN_VERSION_MICRO@ 的值为对应的版本号。

这里有一份修改好的文件,版本号为 0.35.1 ,可直接取用

git clone https://git.oschina.net/wandoer/pixmanversionheader.git

1

git clone https://git.oschina.net/wandoer/pixmanversionheader.git

3.  编译pixman

运行start-shell-msvc2015.bat ,转到 pixman 路径下,运行

make -f Makefile.win32 CFG=release

1

make -f Makefile.win32 CFG=release

如果成功,则 pixman/pixman 路径下有 release 文件夹,内有 pixman-1.lib

4.  修改Makefile.win32.common

在 cairo/build/ 路径下找到 Makefile.win32.common 文件,指定 zlib 和 libpng 所在的路径( ZLIB_PATH 和 LIBPNG_PATH)。

修改 zdll.lib 为 zlib.lib。

5.  编译 cairo

转到 cairo/ 路径下运行命令:

make -f Makefile.win32 CFG=release

1

make -f Makefile.win32 CFG=release

如不出意外,此步应编译成功

6.  提取 include 头文件

在 cairo/ 路径下,添加以下脚本并执行:

mkdir -vp include

cp ./src/cairo-features.h include/

cp ./src/cairo.h include/

cp ./src/cairo-deprecated.hinclude/

cp ./src/cairo-win32.hinclude/

cp ./src/cairo-script.hinclude/

cp ./src/cairo-ps.hinclude/

cp ./src/cairo-pdf.hinclude/

cp ./src/cairo-svg.hinclude/

cp./cairo-version.hinclude/

1

2

3

4

5

6

7

8

9

10

mkdir -vp include

cp  ./src/cairo-features.h  include/

cp  ./src/cairo.h include/

cp  ./src/cairo-deprecated.hinclude/

cp  ./src/cairo-win32.hinclude/

cp  ./src/cairo-script.hinclude/

cp  ./src/cairo-ps.hinclude/

cp  ./src/cairo-pdf.hinclude/

cp  ./src/cairo-svg.hinclude/

cp./cairo-version.hinclude/

至此,cairo 的编译已经完成。

linux从源码编译cairo,如何在windows下编译cairo相关推荐

  1. 如何在Windows下编译OpenSSL?

     OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人 ...

  2. 如何在Windows下编译OpenSSL

    OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人员而言 ...

  3. 记录 Windows 下编译一个开源 SM9 签名验签 C 程序的过程

    注:本文不讨论算法具体实现细节,只介绍如何编译一个现有的程序实现. 在商用密码检测中心( 链接:http://www.scctc.org.cn/index.aspx )的网站上,"下载中心& ...

  4. Windows下编译OpenSSL(使用VS2013或VS2008)

    转自https://www.cnblogs.com/findumars/p/4299976.html 简述 OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和 ...

  5. windows 下编译 DSview 记录

    由于sigrok 界面太土,太难用,就想把DSview编译到windows下, 主要是windows用的人多啊. DSview 有mac  版本, linux版本, windows版本, 但是wind ...

  6. windows下编译以及运行cryptominisat 求解器(sat求解器)

    cryptominisat是由msoos所开发的一款sat求解器,sat的具体问题另外一篇博客里有详细介绍点击打开链接,本篇文章只介绍如何在windows下运行cryptominisat,将自己遇到的 ...

  7. 在Windows下编译OpenSSL(VS2005)【转】

    如何在Windows下编译OpenSSL (Vs2005使用Vc8的cl编译器) 1.安装ActivePerl//初始化的时候,需要用到perl解释器 2.使用VS2005下的Visual Studi ...

  8. 从零开始,手把手教你如何在Ubuntu下编译VLC-Android源码

    前言 公司项目中使用的libvlcjni.so库文件,有点老,对Android 6.0+系统兼容性太差了,当程序运行在Android6.0+系统上时,回弹出警告框,提示libvlcjni.so:tex ...

  9. NanoPi NEO Air使用七:获取并编译U-boot和Linux的源码

    NanoPi NEO Air使用一:介绍 NanoPi NEO Air使用二:固件烧录 NanoPi NEO Air使用三:OverlayFS.CPU温度和频率.wifi.蓝牙.npi-config ...

最新文章

  1. 比特币官网管理者因支持BCH被建议移交权限
  2. Leetcode: Balanced Binary Tree
  3. html兄弟选择器怎么用,CSS的相邻兄弟选择器用法示例讲解
  4. 单例模式,双重检查实现线程安全
  5. TypeScript 4.0 发布
  6. csv 字符串_Python实现json转csv格式
  7. 信息学奥赛一本通 2045:【例5.13】蛇形填数
  8. 唯有拼搏不负君(送年轻人8句话)
  9. try catch finally return
  10. postgresql-窗口函数使用
  11. 23007 2017-2018-2 《程序设计与数据结构》第2周学习总结
  12. Unity 打包微信
  13. Audition CC 2019 Essential Training AuditionCC 2019基本训练 Lynda课程中文字幕
  14. 一周信创舆情观察(9.27~10.10)
  15. python+opencv代码给证件照换底色
  16. 数值分析实验(四)之方程求根的数值方法
  17. I2C中的10bit地址读写
  18. 关于同构关系的一些证明(1)
  19. java接口里面可以定义变量么?
  20. 记录前端导出word 本地图片不显示问题

热门文章

  1. C++ 将二叉树以前序遍历的顺序转换成链表
  2. Polkadot(波卡)简介
  3. 安卓zip解压软件_手机压缩软件ZArchiver下载、使用教程丨免费、中文,支持7z、zip、rar等所有格式...
  4. 用MFC编程时在源文件里经常看到的AFX或afx是什么意思?
  5. 永磁同步直线电机驱动控制原理与matlab建模仿真
  6. 火车运煤问题(马车运草)问题
  7. 用JAVA制作抓老鹰游戏_Java制作最难练手速游戏,Faker都坚持不了一分钟
  8. Python框架:Django写图书管理系统(LMS)
  9. 【windows】在控制面板卸载软件的时候,出现2502,2503的问题
  10. VMX(1) -- 简介