代码之家  ›  专栏  ›  技术社区  ›  Ferruccio

如何在支持libcrypto的Windows上构建PoDoFo?

  •  1
  • Ferruccio  · 技术社区  · 13 年前

    我有一个使用PoDoFo支持PDF的项目,我正在尝试更新它,以使用SVN树中的HEAD版本。

    与我使用的上一个版本相比,最大的变化是从OpenSSL添加了libcrypto,这似乎是必需的。我下载并构建了OpenSSL,并设置了适当的选项(或者我希望如此),以便cmake可以找到libcrypto。

    cmake似乎觉得它还可以,但当我试图从生成的makefile进行构建时,我得到了错误:

    Encrypt.cpp(50) : fatal error C1083: Cannot open include file: 'openssl/md5.h': No such file or directory
    

    我精简了构建脚本,以便能够专注于这个问题:

    setlocal
    set ROOT=%CD%
    pushd podofo
    
    set CMAKE_PARAMS=-Wno-dev -C ..\BuildSetup.cmake . -DCMAKE_INSTALL_PREFIX:PATH=%1
    set CMAKE_PARAMS_RELEASE=-DCMAKE_BUILD_TYPE=Release %CMAKE_PARAMS%
    
    call "%VS100COMNTOOLS%..\..\vc\vcvarsall.bat" x86
    del CMakeCache.txt >nul
    rd /s /q CMakeFiles >nul
    
    set CMAKE_PREFIX_PATH=%ROOT%\install\zlib\x86
    set CMAKE_PREFIX_PATH=%CMAKE_PREFIX_PATH%;%ROOT%\install\freetype\x86
    set CMAKE_PREFIX_PATH=%CMAKE_PREFIX_PATH%;%ROOT%\install\libjpeg\x86
    set CMAKE_PREFIX_PATH=%CMAKE_PREFIX_PATH%;%ROOT%\install\libpng\x86
    set CMAKE_PREFIX_PATH=%CMAKE_PREFIX_PATH%;%ROOT%\install\openssl\x86
    set CRYPTO=-DLIBCRYPTO_INCLUDE_DIR=%ROOT%\install\openssl\x86\include
    set CRYPTO=%CRYPTO% -DLIBCRYPTO_LIBRARY_NAMES=libeay32
    
    cmake %CRYPTO% %CMAKE_PARAMS_RELEASE%\x86 -G "NMake Makefiles"
    cmake --build . --target install --clean-first
    
    popd
    endlocal
    

    我的 BuildSetup.cmake 文件:

    set (CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "config types" FORCE)
    set (CMAKE_INSTALL_PREFIX "../install" CACHE PATH "install path" FORCE)
    
    set (CMAKE_C_FLAGS_RELEASE "/MT /O1 /Ob2 /D NDEBUG" CACHE STRING "C release flags" FORCE)
    set (CMAKE_CXX_FLAGS_RELEASE "/MT /O1 /Ob2 /D NDEBUG" CACHE STRING "C++ release flags" FORCE)
    
    set (CMAKE_C_FLAGS_DEBUG "/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1" CACHE STRING "C debug flags" FORCE)
    set (CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1" CACHE STRING "C++ debug flags" FORCE)
    
    set (BUILD_SHARED_LIBS OFF CACHE STRING "")
    

    我尝试显式添加的路径 openssl/md5.h 到 INCLUDE 没有影响的环境变量。

    我还尝试过使用“Visual Studio 10”生成器。同样的问题。

    2 回复  |  直到 13 年前
        1
  •  0
  •   StefanB    12 年前

    我刚刚遇到了同样的问题!

    如果使用VisualStudio进行构建,则必须手动将openssl目录添加到podofo的项目财产中的c++包含目录中。

    就我而言。。\openssl_vc10\包含

    则构建成功。 没有时间检查cmake为什么不设置这个。

        2
  •  0
  •   Ferruccio    12 年前

    StefanB的答案是正确的。我需要添加include路径来获得cmake来正确构建它。然而,我没有手动破解项目文件(在我的情况下是makefile),而是使用 CL 环境变量,告诉编译器在哪里查找OpenSSL标头。我添加了命令:

    set CL=/I "%ROOT%\install\openssl\x86\include"
    

    在运行cmake之前,它构建得没有错误。

    推荐文章