我有一个使用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”生成器。同样的问题。
答案 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之前构建没有错误。