大多数预编译的Windows二进制文件都是使用MSYS + gcc工具链制作的.它使用MSVCRT运行时,它与Visual C++ 2005/2008不兼容.
那么,如何只为Visual C++编写Cairo 1.6.4(或更高版本).包括依赖项(png,zlib,pixman).
以下是使用Visual C++构建Cairo/Cairomm的说明.
需要:
Visual C++ 2008 Express SP1(现在包含SDK)
MSYS 1.0
要使用VC++命令行工具,需要运行批处理文件"vcvars32.bat".
C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vcvars32.bat
从http://www.zlib.net/下载(并提取)zlib123.zip
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
从http://www.libpng.org/pub/png/libpng.html下载(并摘录)lpng1231.zip
VC++ 9.0编译器提供了"这可能是不安全的"警告.别理他们; 这是MS安全恐慌(代码很好).
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是开罗的一部分,但是单独下载.
从http://www.cairographics.org/releases/下载(并提取)pixman-0.12.0.tar.gz
使用MSYS通过'tar -xvzf pixman*.tar.gz'解压缩
Pixman和Cairo都有用于Visual C++命令行编译器(cl)的Makefile,但它们使用Gnu makefile和类Unix工具(sed等).这意味着我们必须在MSYS中运行make.
在启用VC++命令行工具的情况下打开命令提示符(尝试'cl /?').通过'C:\ MSYS\1.0\MSYS.BAT'将该命令提示符转换为MSYS提示符.
不要使用MSYS图标,因为那时你的提示现在将知道VC++.您无法从MSYS运行.bat文件.
试试VC++工具从这里开始工作:'cl - ?'
尝试Gnu make也有效:'make -v'.
凉.
cd (use /d/... instead of D:) cd pixman-0.12.0/pixman make -f Makefile.win32
默认为MMX和SSE2优化,需要新的x86处理器(Pentium 4或Pentium M或更高版本:http://fi.wikipedia.org/wiki/SSE2)
有一些警告,但似乎成功了.
ls release # pixman-1.lib (static lib required by Cairo)
留在VC++ spiced MSYS提示符下也可以编译Cairo.
从http://www.cairographics.org/releases/下载(并摘录)cairo-1.6.4.tar.gz
cd cd cairo-1.6.4
Makefile.win32在这里几乎是好的,但是有硬连线的Pixman路径.
使用修改后的'Makefile-cairo.win32':
make -f ../Makefile-cairo.win32 CFG=release \ PIXMAN_PATH=../../pixman-0.12.0 \ LIBPNG_PATH=../../lpng1231 \ ZLIB_PATH=../../zlib123
(将所有内容写在一行上,忽略反斜杠)
它说"没有规则来制作'src/cairo-features.h'.使用手动编写的(在Cairo> 1.6.4中可能有一个'src/cairo-features-win32.h',您可以简单地重命名) :
cp ../cairo-features.h src/
重试make命令(向上箭头记住它).
ls src/release # # cairo-static.lib
从http://www.cairographics.org/releases/下载(并摘录)cairomm-1.6.4.tar.gz
有一个Visual C++ 2005项目,我们可以使用(通过开放和升级)2008年.
cairomm-1.6.4\MSCV_Net2005\cairomm\cairomm.vcproj
需要完成的更改:
将活动配置更改为"发布"
Cairomm-1.0属性(带右键菜单)
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
优化:快速FPU代码
C++/Code generation/Floating point model Fast
右键单击'cairomm-1.0'和'build'.有一些警告.
dir cairomm-1.6.4\MSVC_Net2005\cairomm\Release # # cairomm-1.0.lib # cairomm-1.0.dll # cairomm.def