编译mupdf的ios版

来源:互联网 发布:csol星陨巨锤连击编程 编辑:程序博客网 时间:2024/05/17 01:09

戴维营教育原创文章,转载请注明出处。我们的梦想是做最好的iOS开发培训!

MuPDF是一个强大的开源PDF框架,支持GPL和商业授权。下载地址: bash git clone --recursive git://git.ghostscript.com/mupdf.git

最简单的方法是在platform/ios目录中打开MuPDF项目,然后选择合适的架构就可以直接编译运行了(可能要设置SDK版本)。它会自动运行该目录下面的build_libs.sh脚本进行libmupdf.a等静态库,然后存放在刚才下载下来的mupdf目录中的build文件夹下。而头文件则存放在mupdf/include中。

diveinedu $ pwd/Users/diveinedu/opensource/mupdfdieveinedu $ tree -L 1.├── CHANGES├── CONTRIBUTORS├── COPYING├── Makefile├── Makerules├── Makethird├── README├── build├── docs├── generated├── include├── platform├── resources├── scripts├── source└── thirdparty

注意:

从2015年10月5日开始,mupdf使用的OpenGL库从GLUT切换到GLFW,而GLFW不支持iOS,因此编译中会出现找不到OpenGL/gl.h的错误。可以切换回之前的老版本:

查看日志:

$ git logcommit 83a00b0a38558e3e64f38d8a584808e323f4d706Author: Tor Andersson <tor.andersson@artifex.com>Date:   Fri Aug 21 2015 21:22:21 GMT+0800 (CST)    gl: Use GLFW instead of GLUT.    Add OpenGL text rendering using textured quads, instead of using glut bitmap fonts.

切换版本

$ git reset 22cfd27 --hard$ git clean

附加信息

如果不想使用Xcode进行编译,可以直接在mupdf目录下运行xcodebuild命令。 bash xcodebuild -project platform/ios/MuPDF.xcodeproj -target MuPDF

如果希望将不同架构的二进制放置在同一个.a文件中,可以使用lipo进行合并。

$ mkdir product$ lipo debug-ios-x86_64/libcurl.a release-ios-armv7-arm64/libcurl.a -create -output product/libcurl.a$ lipo debug-ios-x86_64/libjpeg.a release-ios-armv7-arm64/libjpeg.a -create -output product/libjpeg.a$ lipo debug-ios-x86_64/libopenjpeg.a release-ios-armv7-arm64/libopenjpeg.a -create -output product/libopenjpeg.a$ lipo debug-ios-x86_64/libfreetype.a release-ios-armv7-arm64/libfreetype.a -create -output product/libfreetype.a$ lipo debug-ios-x86_64/libmujs.a release-ios-armv7-arm64/libmujs.a -create -output product/libmujs.a$ lipo debug-ios-x86_64/libz.a release-ios-armv7-arm64/libz.a -create -output product/libz.a$ lipo debug-ios-x86_64/libjbig2dec.a release-ios-armv7-arm64/libjbig2dec.a -create -output product/libjbig2dec.a$ lipo debug-ios-x86_64/libmupdf.a release-ios-armv7-arm64/libmupdf.a -create -output product/libmupdf.a

最后用lipo查看一下是否合并成功。

 bash $ lipo -info mupdf/lib/libmupdf.a Architectures in the fat file: build/mupdf/lib/libmupdf.a are: armv7 x86_64 arm64

参考资料

  1. 增加bitcode支持

  2. question-ios-library-to-bitcode

  3. develop-an-ebook-reader-on-iphone-ipad-using-mupdf-library

戴维营学院(高级开发视频): http://v.diveinedu.com

潜心俱乐部(iOS面试必备): http://divein.club

0 0