使用CMake和MinGW构建PoDoFo库

时间:2013-11-18 07:39:55

标签: c++ build cmake mingw podofo

我正在尝试在我的Windows平台上构建PoDoFo Library (用作API)。它是使用CMake完成的。 ReadMe文件说明如下。不幸的是,我是CMake的新手,我无法从中得到很多。

  

在Windows上构建PoDoFo

     

Windows需要CMake 2.6.x.你可以从下载   cmake.org。

     

在Windows上,PoDoFo可以构建为共享库或静态库。   不支持构建它们。默认情况下仅限共享库   将建成。如果您想要一个静态库,只需禁用生成   带有cmake额外参数的共享库:

    -DPODOFO_BUILD_SHARED=FALSE
  

在win32上处理库命名

     

特别是在Windows上,自定义构建库也很常见   与您可能下载为预建副本的名称不同。   如果被称为其他东西,CMake将无法找到它们   除非你告诉它。使用这些变量告诉CMake要使用哪些名称   寻找下面的图书馆:

•FREETYPE_LIBRARY_NAMES_DEBUG, FREETYPE_LIBRARY_NAMES_RELEASE and FREETYPE_LIBRARY_NAMES
•TIFF_LIBRARY_NAMES_DEBUG, TIFF_LIBRARY_NAMES_RELEASE and TIFF_LIBRARY_NAMES 
•LIBJPEG_LIBRARY_NAMES_DEBUG, LIBJPEG_LIBRARY_NAMES_RELEASE and LIBJPEG_LIBRARY_NAMES
•ZLIB_LIBRARY_NAMES_DEBUG, ZLIB_LIBRARY_NAMES_RELEASE,ZLIB_LIBRARY_NAMES
  

使用MinGW在Windows上构建CMake

     

设置MinGW后,请确保MinGW“bin”目录已打开   你的PATH,一定要设置CMAKE_INCLUDE_PATH和   CMAKE_LIBRARY_PATH使CMake可以找到头文件和.lib文件   对于PoDoFo所需的库。 GnuWin32库包来自   已知http://gnuwin32.sf.net/可以与PoDoFo一起使用,因此安装   从那里开始,zlib,freetype和libjpeg应该可以解决问题。

     

使用默认的GnuWin32安装配置和构建PoDoFo   MinGW已经在你的路径上了:

md ..\podofo-debug 
cd ..\podofo-debug
cmake -G "MinGW Makefiles" ..\podofo-src -DCMAKE_INCLUDE_PATH=c:\progra~1\gnuwin32\include -DCMAKE_LIBRARY_PATH=c:\progra~1\gnuwin32\lib -DPODOFO_BUILD_SHARED:BOOL=FALSE mingw32-make

我已经安装了CMake并下载了提到的其他库freetype, zlib, libjpeg。它们的标题和二进制文件位于各自的文件夹中。

现在DCMAKE_INCLUDE_PATHDCMAKE_LIBRARY_PATH应该是什么?还有什么是"MinGW Makefiles"?我是否必须提供任何额外的参数?

如果有人能够通过简单的步骤解释我如何解决这个问题,我将不胜感激。

编辑:执行CMAKE时出错:

-- Ensure you cppunit installed version is at least 1.12.0
Cppunit not found. No unit tests will be built.
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindPack
ageHandleStandardArgs.cmake:97 (message):
  Could NOT find FREETYPE (missing: FREETYPE_LIBRARY FREETYPE_INCLUDE_DIR)
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindPackageHandleStan
dardArgs.cmake:291 (_FPHSA_FAILURE_MESSAGE)
  cmake/modules/FindFREETYPE.cmake:75 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:372 (FIND_PACKAGE)

2 个答案:

答案 0 :(得分:6)

要构建PoDoFo,您需要安装GnuWin32,CMake,MinGW32和PoDoFo源

  1. 下载GetGnuWin32
  2. 安装到c:\ getgnuwin32
  3. 打开cmd.exe
  4. cd c:\ getgnuwin32
  5. download.bat
  6. install.bat
  7. 然后按照@ibizaman回答

    的建议
    cmake -G "MinGW Makefiles"  -DCMAKE_INCLUDE_PATH="C:\gnuwin32\include" -DCMAKE_LIBRARY_PATH="C:\gnuwin32\lib" -DPODOFO_BUILD_STATIC=TRUE ..
    

    FreeType应与GnuWin32软件包一起安装

答案 1 :(得分:5)

如果您按照所有说明进行编译,通常就足够了:

cd <podofo root directory (where CMakeLists.txt is)>
mkdir build 
cd build
cmake -G "MinGW Makefiles" -DCMAKE_INCLUDE_PATH=<path to headers> -DCMAKE_LIBRARY_PATH=<path to libraries> -DPODOFO_BUILD_SHARED:BOOL=FALSE ..
mingw32-make

一步一步: 首先,转到podofo源所在的目录。你应该看到一个CMakeLists.txt文件。

第二个(和第三个),创建(并进入)将完成编译的目录。我称之为构建,但它可以是任何名称。这是最佳实践,因为您只需删除构建目录并返回到干净状态。

第四,请cmake为mingw创建makefile:

  • 指定手册中公布的PODOFO_BUILD_SHARED:build shared或static version。
  • CMAKE_INCLUDE_PATHCMAKE_LIBRAY_PATH用于引用构建podofo所需的包。如果您下载了预编译的软件包,就像您拥有de头文件和二进制文件一样,那么您需要向cmake提供这些头文件和二进制文件的路径。如果需要,您可以多次指定变量,例如:

    cmake -G "MinGW Makefiles" -DCMAKE_INCLUDE_PATH=/path/to/freetype/include -DCMAKE_LIBRARY_PATH=/path/to/freetype/lib  -DCMAKE_INCLUDE_PATH=/path/to/zlib/include -DCMAKE_LIBRARY_PATH=/path/to/zlib/lib -DPODOFO_BUILD_SHARED:BOOL=FALSE ..
    
  • "MinGW Makefiles"告诉cmake创建特定于mingw的makefile。否则,默认情况下在Windows上,它会创建特定于Microsoft Visual Studio的makefile。

  • 最后以CMakeLists.txt为最终引用父目录中的..

最后但并非最不重要的是,使用mingw版本的make编译。