3

我正在尝试PoDoFo Library在我的 Windows 平台上构建(用作 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

CMake 使用 MinGW 在 Windows 上构建

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

要使用默认 GnuWin32 安装和 PATH 上已经存在的 MinGW 配置和构建 PoDoFo:

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_PATH什么DCMAKE_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)
4

2 回答 2

7

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

  1. 下载GetGnuWin32
  2. 安装到 c:\getgnuwin32
  3. 打开 cmd.exe
  4. cd c:\getgnuwin32
  5. download.bat
  6. install.bat

然后按照@ibizaman 回答中的建议

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

FreeType 应与 GnuWin32 软件包一起安装

于 2013-11-25T13:09:40.510 回答
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文件。

第二(和第三),创建(并进入)将完成编译的目录。我称它为 build 但它可以是任何名称。这是最佳实践,因为您可以简单地删除构建目录并恢复到干净状态。

第四,让 cmake 为 mingw 创建 makefile(s):

  • 指定PODOFO_BUILD_SHARED手册中宣传的类似内容:构建共享或静态版本。
  • 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 进行编译。

于 2013-11-20T16:36:18.200 回答