当前位置: 首页 > 知识库问答 >
问题:

用CMake和MinGW构建PoDoFo库

柴飞星
2023-03-14

我正在尝试在我的Windows平台上构建<code>PoDoFo库</code>(用作API)。这是使用CMake完成的。ReadMe文件说明如下。不幸的是,我是CMake的新手,我无法从中获得很多东西。

在Windows上构建PoDoFo

Windows 需要 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文件。GnuWin32库包来自http://gnuwin32.sf.net/已知可以与PoDoFo一起工作,因此从那里安装zlib、freetype和libjpeg应该可以做到这一点。

要使用默认的GnuWin32安装和已在您的PATH上使用MinGWhtml" target="_blank">配置和构建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。它们的头文件和二进制文件位于各自的文件夹中。

那么< code>DCMAKE_INCLUDE_PATH和< code>DCMAKE_LIBRARY_PATH应该是什么呢?还有什么是< code >“MinGW生成文件”?我必须提供任何额外的参数吗?

如果有人能用简单的步骤解释我该怎么做,我将不胜感激。

EDIT:执行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个答案

王庆
2023-03-14

如果你遵循了所有的说明,编译它通常就足够了:

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源所在的目录。您应该看到一个<code>CMakeLists。txt</code>文件。

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

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

>

  • 指定手册中宣传PODOFO_BUILD_SHARED:构建共享版本或静态版本。
  • CMAKE_INCLUDE_PATHCMAKE_LIBRAY_PATH用于引用构建 podofo 所需的包。如果您像以前一样下载了预编译的包,因为您有 de headers 和二进制文件,那么您需要提供这些头文件和二进制文件的路径。如果需要,您可以多次指定变量,例如:

    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。

    最后,同样重要的是,使用make的mingw版本进行编译。

  • 汪晟睿
    2023-03-14

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

      < li >下载GetGnuWin32 < li >安装到c:\getgnuwin32 < li >打开cmd.exe < li>cd c:\getgnuwin32 < Li > < code > download . bat < Li > < code > 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软件包一起安装

     类似资料:
    • PoDoFo 是一个用来操作 PDF 文件格式的 C++ 类库。它还包含一些小工具用来解析、修改和创建 PDF 文档。

    • 问题内容: 我在生成允许分别使用gcc和MinGW在Linux和Windows中构建共享库的构建设置时遇到了麻烦。在Linux中,共享库不必在编译时就解决所有依赖关系。相反,在Windows中似乎是这种情况。这是问题设置: 现在,在Linux中,它可以编译并正常运行: 在Windows中,我们需要更改为dll,这是次要的事情: 但是,当我们尝试构建时,会出现以下错误: 现在,我们可以通过简单地将f

    • 我的Ubuntu电脑同时安装了qt4和qt5,因为它与一些lib兼容。目前,我想用qt4重建opencv(用于highgui)。但cmake始终使用qt5(默认版本)。我编辑了CMakeLists。txt文件 重建opencv后,我使用ldd libopencv_highgui检查依赖项。所以 libqt5核心。所以5 = Highgui仍然链接到Qt5。有人能帮我吗?谢谢

    • 本文向大家介绍C++ 使用CMake生成构建环境,包括了C++ 使用CMake生成构建环境的使用技巧和注意事项,需要的朋友参考一下 示例 CMake可以从单个项目定义为几乎所有编译器或IDE生成构建环境。以下示例将演示如何将CMake文件添加到跨平台的“ Hello World” C ++代码。 CMake文件始终被命名为“ CMakeLists.txt”,并且应该已经存在于每个项目的根目录中(可

    • 我正在尝试在Windows 7上使用Cmake构建OpenCV。我选择使用Visual Studio 10编译器。 我收到以下错误: C:/程序文件 (x86)/CMake 2.8/共享/生成 2.8/模块/CMakeCXX 中的生成错误信息:37 (get_filename_component): get_filename_component调用不正确的参数数调用堆栈(最近的调用优先):CMak

    • 我收到了一个用于为嵌入式linux设备构建c /c应用程序的SDK。这对我来说都是新的,所以我的一些术语可能是错误的。 我按照他们的指示和SDK安装在我的linux(ubuntu)系统在 /opt/.他们使用的编译器似乎是arm-poky-linux-gnueabi-gcc。SDK的一部分设置了一些环境变量,如用于编译C/C的$CC和CPP。环境变量运行类似arm-poky-linux-gnuea