Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

Skip to content Skip to footer

Работаем с 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.

1
2
3
4
5
6
7
8
9
10
11
12
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, и собираем ее командой

1
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* 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 командой

1
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
    Posted April 16, 2009 at 09:08

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

  • ochelot
    Posted April 16, 2009 at 10:30

    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
    Posted April 20, 2009 at 17:53

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

  • Post Author
    T-Rex
    Posted April 21, 2009 at 00:15

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

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

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

  • ochelot
    Posted April 21, 2009 at 07:40

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

  • Artem
    Posted July 6, 2009 at 12:23

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

Leave a comment

0.0/5