大多数预编译的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

    ZLib

    http://www.zlib.net/下载(并解压缩)zlib123.zip

    cd zlib123
    nmake/f win32/Makefile.msc

    目录
    #zlib.lib是静态库

    #zdll.lib是zlib1.dll的导入库
    #zlib1.dll是共享库

    libpng

    http://www.libpng.org/pub/png/libpng.html下载(并解压缩)lpng1231.zip

    VC++ 9.0编译器提供了“这可能是不安全的”警告。别管他们;
    这是MS安全性的 panic (代码很好)。

    cd lpng1231\lpng1231#由于某种原因,这是两个故事

    nmake/f ../../lpng1231.nmake ZLIB_PATH = ../zlib123

    目录
    #libpng.lib是静态库

    #没有创建dll

    皮克斯曼

    Pixman是Cairo的一部分,但需要单独下载。

    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(使用/d/...代替D :)
    cd pixman-0.12.0/pixman
    make -f Makefile.win32

    这默认为MMX和SSE2优化,需要进行更新
    x86处理器(奔腾4或奔腾M或更高版本:http://fi.wikipedia.org/wiki/SSE2)

    有很多警告,但似乎成功了。

    ls发布
    #pixman-1.lib(开罗需要的静态库)

    留在VC++的MSYS提示符下,以便Cairo也进行编译。

    开罗

    http://www.cairographics.org/releases/下载(并解压缩)cairo-1.6.4.tar.gz

    光盘
    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'。请使用手动准备的
    (在开罗> 1.6.4中,可能有一个“src/cairo-features-win32.h”
    只需重命名):

    cp ../cairo-features.h src/

    重试ma​​ke命令(向上箭头会记住它)。

    ls src/发行版

    #cairo-static.lib

    cairomm(C++ API)

    http://www.cairographics.org/releases/下载(并解压缩)cairomm-1.6.4.tar.gz

    我们可以在2008年使用一个Visual C++ 2005项目(通过打开和升级)。

    cairomm-1.6.4\MSCV_Net2005\cairomm\cairomm.vcproj

    需要完成的更改:
  • 将事件配置更改为“发布”
  • Cairomm-1.0属性(带有右键菜单)

  • C++/常规/其他包含目录:
    ..\..\..\cairo-1.6.4\src(追加到现有文件)

    链接器/常规/附加库目录:
    ..\..\..\cairo-1.6.4\src\release
    ..\..\..\lpng1231\lpng1231
    ..\..\..\zlib123

    链接器/输入/其他依赖项:
    cairo-static.lib libpng.lib zlib.lib msimg32.lib
  • 优化:快速的FPU代码

  • C++/代码生成/浮点模型
    快速地

    右键点击“cairomm-1.0”和“build”。有一些警告。

    dir cairomm-1.6.4\MSVC_Net2005\cairomm\Release

    #cairomm-1.0.lib
    #cairomm-1.0.dll
    #cairomm.def

    10-02 01:51