Работаем с Cairo в wxWidgets – Часть I – Компиляция CAIRO 1.8.6 на Visual C++ 8

Первая статья из цикла, повествующего о том, ка киспользовать библиотеку cairo (и обертку wxCairo) с wxWidgets.

В этот раз речь пойдет о том, как собрать библиотеку cairo с помощью Visual C++ в Windows.

Для начала определимся, что нам нужно:

  • Mozilla Build 1.3
  • cairo 1.8.6
  • libpng 1.2.35
  • zlib 1.2.3
  • pixman 0.14.0


Устанавливаем Mozilla Build, распаковываем все библиотеки.

В переменных окружения прописываем пути к Visual Studio. Для того, чтобы все собралось успешно, необходимо, помимо Visual Studio установить Platform SDK.

DevEnvDir = C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
FrameworkDir = C:\WINDOWS\Microsoft.NET\Framework
FrameworkSDKDir = C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0
FrameworkVersion = v2.0.50727
INCLUDE = C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include
LIB = C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib
LIBPATH = C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB
PATH = C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;C:\Program Files\Microsoft Visual Studio 8\VC\BIN;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\bin;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\bin;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\VCPackages
SDKDIR = C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\
VCINSTALLDIR = C:\Program Files\Microsoft Visual Studio 8\VC
VSINSTALLDIR = C:\Program Files\Microsoft Visual Studio 8
VS80COMNTOOLS = C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\

Переменные окружения для сборки Cairo

Компилируем libpng и zlib

В папке, в которую мы установили Mozilla Build, запускаем скрипт start-msvc8.bat. В появившемся окне консоли переходим в папку, куда мы распаковали библиотеку pixman, и собираем ее командой

make -f Makefile.win32 CFG=release

После сборки переносим файлы библиотек и заголовочные файлы для zlib и libpng в папку с cairo.

  • zlib.h
  • zconf.in.h
  • zconf.h
  • pngconf.h
  • png.h
  • pixman.h
  • pixman-version.h
  • libpng.lib
  • zdll.lib

В папке Cairo правим файл cairo-features.h:

/* Generated by configure.  Do not edit. */
 #ifndef CAIRO_FEATURES_H
 #define CAIRO_FEATURES_H
 #define CAIRO_HAS_FT_FONT 0
 #define CAIRO_HAS_IMAGE_SURFACE 1
 #define CAIRO_HAS_PDF_SURFACE 1
 #define CAIRO_HAS_PNG_FUNCTIONS 1
 #define CAIRO_HAS_PS_SURFACE 1
 #define CAIRO_HAS_SVG_SURFACE 1
 #define CAIRO_HAS_USER_FONT 0
 #define CAIRO_HAS_XLIB_SURFACE 0
 #define CAIRO_HAS_XLIB_XRENDER_SURFACE 0
 /*#undef CAIRO_HAS_QUARTZ_FONT */
 /*#undef CAIRO_HAS_QUARTZ_SURFACE */
 #define CAIRO_HAS_WIN32_FONT 1
 #define CAIRO_HAS_WIN32_SURFACE 1
 #endif

В консоли MozillaBuild переходим в подкаталог src в папке с Cairo.
Собираем Cairo

Собираем cairo командой

make -f Makefile.win32 CFG=release

Если при сборке будет необходима библиотека pixman-1.lib, то копируем ее в эту же папку и повторно запускаем сборку.

После сборки cairo нам будут необходимы следующие файлы:

В результате нам для работы понадобятся только файлы:

  • cairo-deprecated.h
  • cairo-features.h
  • cairo-pdf.h
  • cairo-ps.h
  • cairo-static.lib
  • cairo-svg.h
  • cairo-version.h
  • cairo-win32.h
  • cairo.dll
  • cairo.h
  • cairo.lib
  • zlib1.dll

6 comments

  1. Begemot   •  

    А где же самое главное – зачем оно надо?

  2. ochelot   •  

    http://cairographics.org/

    Cairo — программная библиотека, предназначенная для рендеринга векторной графики с независимым от оборудования API. Содержит примитивы для рисования двумерных изображений на различных платформах с использованием функций аппаратного ускорения там, где это возможно. Поддерживается вывод через X Window System, GDI, Syllable API, BeOS API, Mac OS X Quartz, OS/2,OpenGL-контексты (при помощи glitz), в локальный буфер изображения, PNG, PDF, PostScript, DirectFB и SVG.

    http://linfoline.homedns.org/tutorial_cairo/Cairo%20Tutorial.html

  3. bishop   •  

    А почему не AGG?
    Еще есть wxArt2D.
    Сам с ними не работал, но функционал сравнивал между всеми тремя. Поэтому и возник вопрос предпочтения.

  4. T-Rex   •     Author

    Я не очень уверен в том что AGG – хороший выбор. Там заявлена поддержка X11 и Win32, ни слова про Mac OS. Возможно конечно под Mac OS юзать X11 SDK но это ж надо потом X11 Runtime вроде у юзера ставить, это не есть гут. Хотя вобще думаю надо пробовать, я с AGG тоже не работал.

    wxArt2D, ну, когда-то пытался ее собрать и вроде не все гладко было. Програмить с ней я тоже не пробовал и не помню, собралось оно у меня или нет, но люди вроде хвалят, значит наверное оно тоже ничего так.

    А cairo, ну, на вкус и цвет фломастеры разные. Как “еще один” способ работать с вектором вроде тоже ничего так. хотя да, для создания контекста все равно приходится platform-specific код юзать, без этого никуда.

  5. ochelot   •  

    Я смотрел AGG вещь хорошая, но на сколько я понял она не развивается и сверхсложная (возможно для меня). wxArt2D не смотрел на днях гляну 🙂

  6. Artem   •  

    Да ochelot, с тобой полностью согласен AGG вещь хорошая, но сверхсложная…

Leave a Reply

Your email address will not be published. Required fields are marked *

Please leave these two fields as-is: