Here are instructions for building Cairo/Cairomm with Visual C++.
Required:
- Visual C++ 2008 Express SP1 (now includes SDK)
- MSYS 1.0
To use VC++ command line tools, a batch file 'vcvars32.bat' needs to be run.
C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vcvars32.bat
ZLib
Download (and extract) zlib123.zip from http://www.zlib.net/
cd zlib123
nmake /f win32/Makefile.msc
dir
# zlib.lib is the static library
#
# zdll.lib is the import library for zlib1.dll
# zlib1.dll is the shared library
libpng
Download (and extract) lpng1231.zip from http://www.libpng.org/pub/png/libpng.html
The VC++ 9.0 compiler gives loads of "this might be unsafe" warnings. Ignore them;
this is MS security panic (the code is good).
cd lpng1231\lpng1231 # for some reason this is two stories deep
nmake /f ../../lpng1231.nmake ZLIB_PATH=../zlib123
dir
# libpng.lib is the static library
#
# dll is not being created
Pixman
Pixman is part of Cairo, but a separate download.
Download (and extract) pixman-0.12.0.tar.gz from http://www.cairographics.org/releases/
Use MSYS to untar via 'tar -xvzf pixman*.tar.gz'
Both Pixman and Cairo have Makefiles for Visual C++ command line compiler (cl),
but they use Gnu makefile and Unix-like tools (sed etc.). This means we have
to run the make from within MSYS.
Open a command prompt with VC++ command line tools enabled (try 'cl /?').
Turn that command prompt into an MSYS prompt by 'C:\MSYS\1.0\MSYS.BAT'.
DO NOT use the MSYS icon, because then your prompt will now know of VC++.
You cannot run .bat files from MSYS.
Try that VC++ tools work from here: 'cl -?'
Try that Gnu make also works: 'make -v'.
Cool.
cd (use /d/... instead of D:)
cd pixman-0.12.0/pixman
make -f Makefile.win32
This defaults to MMX and SSE2 optimizations, which require a newish
x86 processor (Pentium 4 or Pentium M or above: http://fi.wikipedia.org/wiki/SSE2 )
There's quite some warnings but it seems to succeed.
ls release
# pixman-1.lib (static lib required by Cairo)
Stay in the VC++ spiced MSYS prompt for also Cairo to compile.
cairo
Download (and extract) cairo-1.6.4.tar.gz from http://www.cairographics.org/releases/
cd
cd cairo-1.6.4
The Makefile.win32 here is almost good, but has the Pixman path hardwired.
Use the modified 'Makefile-cairo.win32':
make -f ../Makefile-cairo.win32 CFG=release \
PIXMAN_PATH=../../pixman-0.12.0 \
LIBPNG_PATH=../../lpng1231 \
ZLIB_PATH=../../zlib123
(Write everything on one line, ignoring the backslashes)
It says "no rule to make 'src/cairo-features.h'. Use the manually prepared one
(in Cairo > 1.6.4 there may be a 'src/cairo-features-win32.h' that you can
simply rename):
cp ../cairo-features.h src/
Retry the make command (arrow up remembers it).
ls src/release
#
# cairo-static.lib
cairomm (C++ API)
Download (and extract) cairomm-1.6.4.tar.gz from http://www.cairographics.org/releases/
There is a Visual C++ 2005 Project that we can use (via open & upgrade) for 2008.
cairomm-1.6.4\MSCV_Net2005\cairomm\cairomm.vcproj
Changes that need to be done:
C++/General/Additional Include Directories:
..\..\..\cairo-1.6.4\src (append to existing)
Linker/General/Additional library directories:
..\..\..\cairo-1.6.4\src\release
..\..\..\lpng1231\lpng1231
..\..\..\zlib123
Linker/Input/Additional dependencies:
cairo-static.lib libpng.lib zlib.lib msimg32.lib
- Optimization: fast FPU code
C++/Code generation/Floating point model
Fast
Right click on 'cairomm-1.0' and 'build'. There are some warnings.
dir cairomm-1.6.4\MSVC_Net2005\cairomm\Release
#
# cairomm-1.0.lib
# cairomm-1.0.dll
# cairomm.def