Я пытаюсь построить PoDoFo Library
на моей платформе Windows (для использования в качестве API). Это делается с помощью CMake
, ReadMe
Файл говорит следующее. К сожалению, я новичок в CMake, и я не могу многое понять из этого.
Сборка PoDoFo на Windows
CMake 2.6.x требуется для Windows. Вы можете скачать его с
cmake.org.В Windows PoDoFo может быть построен как разделяемая или статическая библиотека.
Сборка обоих не поддерживается. По умолчанию только общая библиотека
будет построен. Если вы хотите статическую библиотеку, просто отключите генерацию
разделяемой библиотеки с дополнительным аргументом для cmake:
-DPODOFO_BUILD_SHARED=FALSE
Обработка именования библиотек на win32
Особенно в Windows это также характерно для пользовательских библиотек:
иметь имена, отличные от тех, которые вы можете загрузить в виде готовых копий.
CMake не сможет найти их, если они будут называться как-то еще
если вы не скажете это. Используйте эти переменные, чтобы сообщить CMake, какие имена
ищите библиотеку под:
•FREETYPE_LIBRARY_NAMES_DEBUG, FREETYPE_LIBRARY_NAMES_RELEASE and FREETYPE_LIBRARY_NAMES
•TIFF_LIBRARY_NAMES_DEBUG, TIFF_LIBRARY_NAMES_RELEASE and TIFF_LIBRARY_NAMES
•LIBJPEG_LIBRARY_NAMES_DEBUG, LIBJPEG_LIBRARY_NAMES_RELEASE and LIBJPEG_LIBRARY_NAMES
•ZLIB_LIBRARY_NAMES_DEBUG, ZLIB_LIBRARY_NAMES_RELEASE,ZLIB_LIBRARY_NAMES
CMake работает на Windows с MinGW
После настройки MinGW убедитесь, что каталог «bin» MinGW включен
ваш PATH, и обязательно установите CMAKE_INCLUDE_PATH и
CMAKE_LIBRARY_PATH такой, что CMake может найти заголовки и файлы .lib
для библиотек PoDoFo требуется. Пакеты библиотеки GnuWin32 из
http://gnuwin32.sf.net/ Известно, что работают с PoDoFo, поэтому установка
zlib, freetype и libjpeg оттуда должны сделать свое дело.Для настройки и сборки PoDoFo с установкой по умолчанию GnuWin32 и с
MinGW уже на вашем пути
md ..\podofo-debug
cd ..\podofo-debug
cmake -G "MinGW Makefiles" ..\podofo-src -DCMAKE_INCLUDE_PATH=c:\progra~1\gnuwin32\include -DCMAKE_LIBRARY_PATH=c:\progra~1\gnuwin32\lib -DPODOFO_BUILD_SHARED:BOOL=FALSE mingw32-make
Я установил CMake
и скачал другие библиотеки, упомянутые как freetype, zlib, libjpeg
, Их заголовок и двоичные файлы находятся в соответствующих папках.
Теперь, что должно DCMAKE_INCLUDE_PATH
а также DCMAKE_LIBRARY_PATH
быть? И что "MinGW Makefiles"
? Должен ли я предоставить какие-либо дополнительные параметры?
Я буду благодарен, если кто-то сможет объяснить в простых шагах, как я могу это сделать.
РЕДАКТИРОВАТЬ: ошибка при выполнении CMAKE:
-- Ensure you cppunit installed version is at least 1.12.0
Cppunit not found. No unit tests will be built.
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindPack
ageHandleStandardArgs.cmake:97 (message):
Could NOT find FREETYPE (missing: FREETYPE_LIBRARY FREETYPE_INCLUDE_DIR)
Call Stack (most recent call first):
C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindPackageHandleStan
dardArgs.cmake:291 (_FPHSA_FAILURE_MESSAGE)
cmake/modules/FindFREETYPE.cmake:75 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMakeLists.txt:372 (FIND_PACKAGE)
Если вы следовали всем инструкциям, для компиляции обычно должно быть достаточно:
cd <podofo root directory (where CMakeLists.txt is)>
mkdir build
cd build
cmake -G "MinGW Makefiles" -DCMAKE_INCLUDE_PATH=<path to headers> -DCMAKE_LIBRARY_PATH=<path to libraries> -DPODOFO_BUILD_SHARED:BOOL=FALSE ..
mingw32-make
Шаг за шагом:
Сначала перейдите в каталог, где находятся ваши источники podofo. Вы должны увидеть CMakeLists.txt
файл валяется.
Во-вторых (и в-третьих), создайте (и войдите в) каталог, где будет выполнена компиляция. Я называю это build, но это может быть любое имя. Это лучшая практика, поскольку вы можете просто удалить каталог сборки и вернуться в чистое состояние.
В-четвертых, попросите cmake создать make-файл (ы) для mingw:
PODOFO_BUILD_SHARED
как рекламируется в руководстве: сборка разделяемая или статическая версия.CMAKE_INCLUDE_PATH
а также CMAKE_LIBRAY_PATH
используются для ссылки на пакеты, необходимые для сборки podofo. Если вы скачали предварительно скомпилированные пакеты, как вы сделали, так как у вас есть de headers и двоичные файлы, то вам нужно указать cmake путь к этим заголовкам и двоичным файлам. При необходимости вы можете указать переменные несколько раз, например:
cmake -G "MinGW Makefiles" -DCMAKE_INCLUDE_PATH=/path/to/freetype/include -DCMAKE_LIBRARY_PATH=/path/to/freetype/lib -DCMAKE_INCLUDE_PATH=/path/to/zlib/include -DCMAKE_LIBRARY_PATH=/path/to/zlib/lib -DPODOFO_BUILD_SHARED:BOOL=FALSE ..
"MinGW Makefiles"
сообщает cmake о создании make-файлов, специфичных для mingw. Иначе, по умолчанию в Windows, он создает make-файлы, специфичные для Microsoft Visual Studio.
CMakeLists.txt
в родительском каталоге с ..
в конце.И последнее, но не менее важное: скомпилируйте с версией make для mingw.
Для сборки PoDoFo вам нужно установить GnuWin32, Исходники CMake, MinGW32 и PoDoFo
download.bat
install.bat
Тогда как предложено в ответе @ibizaman
cmake -G "MinGW Makefiles" -DCMAKE_INCLUDE_PATH="C:\gnuwin32\include" -DCMAKE_LIBRARY_PATH="C:\gnuwin32\lib" -DPODOFO_BUILD_STATIC=TRUE ..
FreeType должен быть установлен с пакетами GnuWin32