【问题标题】:How do you build PoDoFo on Windows with libcrypto support?如何在支持 libcrypto 的 Windows 上构建 PoDoFo?
【发布时间】:2013-10-17 17:00:43
【问题描述】:

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

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

cmake 似乎觉得没问题,但是当我尝试从生成的 makefile 构建时,我得到了错误:

Encrypt.cpp(50):致命错误 C1083:无法打开包含文件:'openssl/md5.h':没有这样的文件或目录

我削减了我的构建脚本,以便我可以专注于这个问题:

设置本地 设置 ROOT=%CD% 推波多福 设置 CMAKE_PARAMS=-Wno-dev -C ..\BuildSetup.cmake 。 -DCMAKE_INSTALL_PREFIX:PATH=%1 设置 CMAKE_PARAMS_RELEASE=-DCMAKE_BUILD_TYPE=释放 %CMAKE_PARAMS% 调用“%VS100COMNTOOLS%..\..\vc\vcvarsall.bat”x86 del CMakeCache.txt >nul rd /s /q CMakeFiles >nul 设置 CMAKE_PREFIX_PATH=%ROOT%\install\zlib\x86 设置 CMAKE_PREFIX_PATH=%CMAKE_PREFIX_PATH%;%ROOT%\install\freetype\x86 设置 CMAKE_PREFIX_PATH=%CMAKE_PREFIX_PATH%;%ROOT%\install\libjpeg\x86 设置 CMAKE_PREFIX_PATH=%CMAKE_PREFIX_PATH%;%ROOT%\install\libpng\x86 设置 CMAKE_PREFIX_PATH=%CMAKE_PREFIX_PATH%;%ROOT%\install\openssl\x86 设置 CRYPTO=-DLIBCRYPTO_INCLUDE_DIR=%ROOT%\install\openssl\x86\include 设置 CRYPTO=%CRYPTO% -DLIBCRYPTO_LIBRARY_NAMES=libeay32 cmake %CRYPTO% %CMAKE_PARAMS_RELEASE%\x86 -G "NMake Makefiles" cmake --build 。 --target 安装 --clean-first 流行音乐 本地端

我的BuildSetup.cmake 文件:

设置(CMAKE_CONFIGURATION_TYPES“调试;发布”缓存字符串“配置类型”强制) 设置(CMAKE_INSTALL_PREFIX "../install" CACHE PATH "安装路径" FORCE) 设置(CMAKE_C_FLAGS_RELEASE "/MT /O1 /Ob2 /D NDEBUG" CACHE STRING "C 释放标志" FORCE) 设置(CMAKE_CXX_FLAGS_RELEASE "/MT /O1 /Ob2 /D NDEBUG" CACHE STRING "C++ 发布标志" FORCE) 设置(CMAKE_C_FLAGS_DEBUG "/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1" CACHE STRING "C 调试标志" FORCE) 设置(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1" CACHE STRING "C++ 调试标志" FORCE) 设置(BUILD_SHARED_LIBS 关闭缓存字符串“”)

我尝试将openssl/md5.h 的路径显式添加到INCLUDE 环境变量中,但没有效果。

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

【问题讨论】:

    标签: windows cmake libcrypto podofo


    【解决方案1】:

    我也遇到了同样的问题!

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

    在我的情况下 ..\openssl_vc10\include

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-03-19
        • 1970-01-01
        • 2010-09-16
        • 1970-01-01
        • 1970-01-01
        • 2020-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多