1

我有一个使用 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.hINCLUDE环境变量中,但没有任何效果。

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

4

2 回答 2

0

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

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

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

于 2013-10-26T11:01:36.837 回答
0

我只是遇到了同样的问题!

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

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

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

于 2013-10-23T13:54:38.863 回答