Первая статья из цикла, повествующего о том, ка киспользовать библиотеку 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\
Компилируем 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 командой
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
Begemot
А где же самое главное – зачем оно надо?
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
bishop
А почему не AGG?
Еще есть wxArt2D.
Сам с ними не работал, но функционал сравнивал между всеми тремя. Поэтому и возник вопрос предпочтения.
T-Rex
Я не очень уверен в том что AGG – хороший выбор. Там заявлена поддержка X11 и Win32, ни слова про Mac OS. Возможно конечно под Mac OS юзать X11 SDK но это ж надо потом X11 Runtime вроде у юзера ставить, это не есть гут. Хотя вобще думаю надо пробовать, я с AGG тоже не работал.
wxArt2D, ну, когда-то пытался ее собрать и вроде не все гладко было. Програмить с ней я тоже не пробовал и не помню, собралось оно у меня или нет, но люди вроде хвалят, значит наверное оно тоже ничего так.
А cairo, ну, на вкус и цвет фломастеры разные. Как “еще один” способ работать с вектором вроде тоже ничего так. хотя да, для создания контекста все равно приходится platform-specific код юзать, без этого никуда.
ochelot
Я смотрел AGG вещь хорошая, но на сколько я понял она не развивается и сверхсложная (возможно для меня). wxArt2D не смотрел на днях гляну 🙂
Artem
Да ochelot, с тобой полностью согласен AGG вещь хорошая, но сверхсложная…