Сборка библиотеки PoDoFo с использованием CMake и MinGW

Я пытаюсь построить 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)

3

Решение

Если вы следовали всем инструкциям, для компиляции обычно должно быть достаточно:

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.

5

Другие решения

Для сборки PoDoFo вам нужно установить GnuWin32, Исходники CMake, MinGW32 и PoDoFo

  1. скачать GetGnuWin32
  2. установить в c: \ getgnuwin32
  3. открыть cmd.exe
  4. cd c: \ getgnuwin32
  5. download.bat
  6. 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

6

По вопросам рекламы [email protected]