PODOFO编译之2——依赖项编译及podofo-0.9.2编译

PODOFO编译之依赖项编译及podofo-0.9.2编译

 

          http://svn.code.sf.net/p/podofo/code/podofo/trunk       SVN  
          http://podofo.sourceforge.net/doc/html/index.html      DOC  
          http://podofo.sourceforge.net/download.html                DOWNLOAD  


         podofo-0.9.2中,ZLIBOpenSSL是必须的,其他的可选,本例仅选重要的几个依赖项进行编译。本例是参照下面两个链接中的文章进行的,内容也无所变更,只是版本不同,但鉴于亲自动手操作亦有必要作下笔记,故记于此。

http://blog.csdn.net/zxxssdsd/article/details/9454629

http://blog.csdn.net/xing2005112117/article/details/6291025


        整个项目可在下面的360网盘分享链接中下载,由于文件较大无法在同一文件夹中共享,因此分割成了两个两个文件夹:PDFDev1和PDFDev2,1中的是podofo项目,包括编译后的VS2010解决方案及其中各个项目的debug和release版本可执行文件;2中是其他的依赖项的库和头文件,将两个下载后合并到PDFDev文件夹中接口用VS2010进行正常操作,其中的一些配置因为是CMake自动生成,所以如果不是将PDFDev保存到D盘根目录下,则需要更改属性配置。

       http://yunpan.cn/QDMw3SgyZCpGF     (PDFDev1)

       http://yunpan.cn/QDMwNp5D3Fiu3      (PDFDev2)


        下面步骤中所需的全部源码或安装包可以在 http://download.csdn.net/detail/yaoyuanyylyy/6757975 中下载,或者在我的360网盘分享中http://yunpan.cn/QDMQjkpkn3hBt下载

 

          更新更正确的编译版请参看:http://blog.csdn.net/yaoyuanyylyy/article/details/17757677

 

一、jpeg9

1.       http://www.ijg.org网址下载jpeg,或直接使用链接http://www.ijg.org/files/jpegsr9.zip下载,然后解压到D:\PDFDev目录下。

2.       VS命令行提示符下进入到D:\PDFDev\jpeg-9目录,然后执行下面的命令,则可在该目录中生成libjpeg.lib文件。

> copy jconfig.vc jconfig.h                  // CMake构建时必须要.h文件

> vsvars32.bat                                             //设置环境

> nmake /f makefile.vc /a                           // debug版本

> nmake nodebug=1 /f makefile.vc /a     // release版本

 

二、zlib 1.2.8

1.       http://zlib.net下载zlib源码解压到D:\PDFDev目录下,当然也可直接下载编译版本来使用。

2.       VS命令行提示符中进入到D:\PDFDev\zlib-1.2.8目录,然后运行下面的命令则可在该目录下生成所需的库文件。

>nmake -f win32/Makefile.msc  

 

三、tiff 3.8.2

1.       http://nchc.dl.sourceforge.net/project/gnuwin32/tiff/3.8.2-1/tiff-3.8.2-1-src.ziphttp://www.libtiff.org/下载tiff源码,解压到D:\PDFDev目录下。

2.       进入到tiff源码目录D:\PDFDev\tiff-3.8.2-1-src\src\tiff\3.8.2\tiff-3.8.2-src下,修改nmake.opt文件,添加JPEGZLIB配置:

……

# Uncomment and edit following lines to enable JPEG support.

#

JPEG_SUPPORT         = 1

JPEGDIR =D:/PDFDev/jpeg-9

JPEG_INCLUDE = -I$(JPEGDIR)

JPEG_LIB          = $(JPEGDIR)/libjpeg.lib

……

#

# Uncomment and edit following lines to enable ZIP support

# (required for Deflate compression and Pixar log-format)

#

ZIP_SUPPORT   = 1

ZLIBDIR   = D:/PDFDev/zlib-1.2.8

ZLIB_INCLUDE = -I$(ZLIBDIR)

ZLIB_LIB =$(ZLIBDIR)/zlib.lib

……

3.       VS命令行提示符中进入D:\PDFDev\tiff-3.8.2-1-src\src\tiff\3.8.2\tiff-3.8.2-src目录,执行下面的命令,便可以生成所需的库文件(命令执行的最后有一些链接错误,暂时忽略):

>nmake /f makefile.vc

        

四、FreeType 2.5.2

1.       http://sourceforge.net/projects/freetype/files/http://www.freetype.org/中下载ft252.zip,解压到D:\PDFDev目录下。

2.       vs2010中打开D:\PDFDev\freetype-2.5.2\builds\windows\vc2010\freetype.sln,然后分别在debug multithreadedrelease multithreaded模式下生成(生成——>配置管理器——>活动解决方案——>选择)。这时,在D:\PDFDev\freetype-2.5.2\objs下就会生成debug_mtrelease_mt两个文件夹,在D:\PDFDev\freetype-2.5.2\objs\win32\vs2010下面生成freetype252MT.libfreetype252MT_D.lib两个库文件,将debug_mt文件夹中的vc100.pdb(使VC++能够找到freetype的调试信息)文件复制到lib库的目录下。

 

五、lpng167

1.         http://sourceforge.net/projects/libpng/files/libpng16/1.6.7/http://libpng.sourceforge.net/index.html中下载lpng167.zip,解压到D:\PDFDev目录下。

2.         VS2010中打开D:\PDFDev\lpng167\projects\vstudio\vstudio.sln,因为要使用自己下载的zlib,所以需要在解决方案--->属性--->通用属性--->项目依赖项中去掉libpngzlib的依赖。

3.         ”libpng项目--->属性--->配置属性--->vc++目录中添加zlib库的lib(库目录)和include路径(包含目录);并在链接器à输入à附加依赖性中添加zdll.lib

4.         由于libpngpnglibconf还有依赖,所以先编译pnglibconf,再编译libpng;或者直接编译整个解决方案(这时其他的项目可能有错误,但对libpng不影响),在D:\PDFDev\lpng167\projects\vstudio目录下的ReleaseDebug文件夹中,将生成libpng16.dlllibpng16.lib

 

六、OpenSSL 1.0.1e

1.      http://www.openssl.org/source/下载openssl-1.0.1e.tar.gz,解压到D:\PDFDev目录下;在http://www.activestate.com/activeperl下载win32 PERL的安装包并安装,安装时将添加环境变量勾选。

2.      VS命令行提示符中进入到D:\PDFDev\openssl-1.0.1e目录,执行下面的命令,则可在指定目录中生成binincludelib三个文件夹:

> perl Configure VC-WIN32 –prefix=d:/openssl-1.0.1e //执行perl配置以生成makefile,最后个参数表示OpenSSL编译后的安装路径,可无,本例默认生成到D:\usr中

> ms\do_ms //

> nmake -f ms\ntdll.mak  //编译OpenSSL

>nmake –f ms\ntdll.mak test  //检查上一步是否成功(若无错则可省)

> nmake -f ms\ntdll.mak install //将编译好的OpenSSL安装到指定目录

3.      如果需要生成debug版本,则需要修改D:\PDFDev\openssl-1.0.1e\ms\do_ms.bat文件(主要是添加debug关键字),然后在运行上面的命令:

perl util\mkfiles.pl >MINFO

perl util\mk1mf.pl debug  no-asm VC-WIN32 >ms\nt.mak

perl util\mk1mf.pl debug  dll no-asm VC-WIN32 >ms\ntdll.mak

if x%OSVERSION% == x goto skipce

perl util\mk1mf.pl debug  no-asm VC-CE >ms\ce.mak

perl util\mk1mf.pl debug  dll no-asm VC-CE >ms\cedll.mak

:skipce

 

perl util\mkdef.pl 32 libeay > ms\libeay32.def

perl util\mkdef.pl 32 ssleay > ms\ssleay32.def

4.      本例中OpenSSL生成的文件被手动保存到D:/PDFDev/openssl-1.0.1e/openssl_debug中(release类似)。

        

七、podofo-0.9.2

1.       D:/PDFDev/podofo-0.9.2中新建build目录,用来存放构建后的项目,打开CMake安装目录的bin中的cmake-gui.exe,在“Where is the source code”中选择D:/PDFDev/podofo-0.9.2目录,在“Where to build the binaries”中选择D:/PDFDev/podofo-0.9.2/build目录,并选中下面的“Grouped”“Advanced”复选框,然后单击“Configure”按钮执行配置,会得到红色标注背景的配置选项,其中含有podofo必须的ZLIBLIBCRYPTO,但没有其他的TIFF等选项。

2.       重新配置好ZLIBLIBCRYPTO项的包含目录和库,再次单击“Configure”执行配置,此刻就会显示出podofo的其他以来项的配置选项。不需要的项目可以在D:/PDFDev/podofo-0.9.2/CMakeLists.txt文件中注释掉(如”#FIND_PACKAGE(CppUnit)”)。配置好后再单击“Configure”执行配置,直到输出“Configure done”为止。(CMake配置中的路径最好不要有中文,配置参考如下,在新标签中可查看图片全景)

PODOFO编译之2——依赖项编译及podofo-0.9.2编译_第1张图片

3.       单击“Generate”按钮,则可在build文件夹中生成相应的解决方案。

4.       lpng167中的pngconf.hpnginfo.hpng.hpnglibconf.htiff-3.8.2-1-src源码目录中的tiffio.htiffvers.htiff.htif_config.htiffconf.h文件复制到D:\PDFDev\podofo-0.9.2\src中。然后在pnginfo.h文件中包含下面的两个文件:

#include “png.h”

#include “pngconf.h”

5.       VS2010中打开D:\PDFDev\podofo-0.9.2\build\podofo.sln,编译项目”ALL_BUILD“则将所有项目都编译,同时也在D:\PDFDev\podofo-0.9.2\build\src中的debugrelease中生成了podofo.lib库文件。

6.       可验证下编译后的程序是否可用,如test中的WatermarkTest(加水印)、tools中的podofoencrypt(加密)、examples中的helloworld,这些都是控制台下的exe程序,都是正确运行了的。但其中的CreationTest和podofoimg2pdf这两个项目编译失败。

7.       在编译podofo的时候,由于CMake中的配置问题,可能会出现某些错误,比如一些项目编译失败,或者是一些库连接错误,这需要自己逐步排除、慢慢修改,然后重新生成podofo.sln项目。我在编译时出现了无法解析的命令符号,是因为在CMake中将LIBCRYPTOSSL的库都配置为ssleay32.lib,后来将LIBCRYPTO的库配置改为libeay32.lib,就可以识别了;但此时FREETYPEDebug库配置的freetype252MT_D.lib中的一些MD5之类的东西又与libeay32.lib冲突,不知何故(经过跟踪,发现是在freetypte-2.5.2\src\base\ftobjs.c文件中因为FT_DEBUG_LEVEL_TRACE宏而使得在Debug版本中用到了MD5相关函数导致的,该宏的含义及作用或可参考http://www.oschina.net/code/explore/instantbird-0.2-src/mozilla/modules/freetype2/docs/DEBUG),于是将其改为freetype252MT.librelease)版本,才正确了(当然若不需要相关的调试信息也可以直接编辑ftobjs.c文件,把那些宏删掉,然后再编译freetype)。当然,由于该项目的依赖项较多,所以潜在的bug也可能很多,只有在后续使用中发现解决了。

 

 

你可能感兴趣的:(podofo)