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

时间:2013-10-17 17:00:44

标签: windows cmake libcrypto podofo

我有一个使用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 个答案:

答案 0 :(得分:0)

我刚遇到同样的问题!

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

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

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

答案 1 :(得分:0)

StefanB的回答是正确的。我需要添加include路径来让cmake正确构建它。但是,我使用CL环境变量来告诉编译器在哪里查找OpenSSL头,而不是手动黑客攻击项目文件(或者我的情况下是makefile)。我添加了命令:

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

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