Как вы строите PoDoFo на Windows с поддержкой libcrypto?

У меня есть проект, который использует PoDoFo для поддержки PDF, и я пытаюсь обновить его, чтобы использовать версию HEAD из дерева SVN.

Большое изменение по сравнению с последней версией, которую я использовал, - это дополнение к libcrypto из OpenSSL, которое, по-видимому, необходимо. Я скачал и собрал OpenSSL и настроил соответствующие параметры (или так надеялся), чтобы cmake мог найти libcrypto.

Кажется, cmake находит это нормально, но когда я пытаюсь собрать из полученного make-файла, я получаю ошибку:

Encrypt.cpp (50): фатальная ошибка C1083: не удается открыть включаемый файл: 'openssl/md5.h': такого файла или каталога нет

Я сократил свой сценарий сборки, чтобы сосредоточиться на этой проблеме:

SETLOCAL
установить ROOT=%CD%
пуш подофо

установить CMAKE_PARAMS=-Wno-dev -C ..\BuildSetup.cmake . -DCMAKE_INSTALL_PREFIX:PATH=%1
set CMAKE_PARAMS_RELEASE=-DCMAKE_BUILD_TYPE=Release %CMAKE_PARAMS%

вызов "%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; выпуск" CACHE STRING "для типов конфигурации" FORCE)
набор (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 OFF CACHE STRING "")

Я попытался явно добавить путь openssl/md5.h к INCLUDE переменная окружения без эффекта.

Я также пытался использовать генератор "Visual Studio 10". Та же проблема.

2 ответа

Решение

StefanB ответ правильный. Мне нужно было добавить путь включения, чтобы заставить cmake правильно его собрать. Однако вместо того, чтобы вручную взломать файл проекта (или makefile в моем случае), я использовал CL Переменная окружения, сообщающая компилятору, где искать заголовки OpenSSL. Я добавил команду:

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

перед запуском cmake и он собран без ошибок.

Я просто столкнулся с той же проблемой!

Если вы строите с помощью VisualStudio, вы должны вручную добавить каталог openssl в каталоги C++ include в свойствах проекта podofo.

в моем случае..\openssl_vc10\include

тогда сборка успешна. У меня нет времени, чтобы проверить, почему cmake не устанавливает это.

Другие вопросы по тегам