编译mupdf的ios版
戴维营教育原创文章,转载请注明出处。我们的梦想是做最好的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/mupdf
dieveinedu $ 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 log
commit 83a00b0a38558e3e64f38d8a584808e323f4d706
Author: 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
参考资料
2. question-ios-library-to-bitcode
3. develop-an-ebook-reader-on-iphone-ipad-using-mupdf-library