在Windows上安装Cairo,Helm

时间:2015-11-26 03:41:37

标签: cairo cabal-install

如何在Windows 7(64位)上安装Helm(https://hackage.haskell.org/package/helm)?

(更新:我在这里发布了很多错误消息,但我已将它们移到我的答案中,以免弄乱问题。)

1 个答案:

答案 0 :(得分:1)

Windows 64位安装:

我包含错误消息,因为如果您按照所有步骤进行操作,然后尝试直接安装。这是来自许多不同帖子的一系列临时步骤的集合。任何简化都将不胜感激!

注意:所有工作都在没有空格的目录中。我在C:/ PF中完成所有工作;将其修改为您的目录。

  1. https://msys2.github.io/下载MSYS2-x86_64并安装它。 Cabal安装cairo(或helm)将提供如下内容:

    配置cairo-0.13.1.0 ...   setup.exe:缺少对外部库的依赖:

    • 缺少C库:z,cairo,z,gobject-2.0,ffi,pixman-1,fontconfig, expat,freetype,iconv,expat,freetype,z,bz2,harfbuzz,glib-2.0,intl, ws2_32,ole32,winmm,shlwapi,intl,png16,z
  2. 下载C库。在MINGW64(不是MSYS2 - 我在过程的随机阶段遇到MSYS2问题),使用包管理器:

    pacman -Ss cairo

  3. 搜索Cairo包。您将找到" mingw64 / mingw-w64-x86_64-cairo",请安装:

    pacman -S mingw64/mingw-w64-x86_64-cairo
    

    *。应将PC文件添加到C:\ PF \ msys64 \ mingw64 \ lib \ pkgconfig和C:\ PF \ msys64 \ usr \ lib \ pkgconfig。 (pkg-config需要能够找到这些文件。它在PKG_CONFIG_PATH中查找,默认情况下应该有上面的lib / pkgconfig文件夹。在这里移动文件最简单。参见Can't install sdl2 via cabal)如果你得到

    The pkg-config package ... version ... cannot be found 
    

    错误然后检查您的* .pc文件。

    重复其他必需的库,例如atk

    pacman -S mingw64/mingw-w64-x86_64-atk
    

    (我不知道完整列表,但稍后会出现错误消息,告诉您该怎么做。)

    1. 获取这些库的开发文件(由How to install cairo on Windows建议)。他们中的大多数都是http://ftp.gnome.org/pub/gnome/binaries/win64/gtk+/2.22/捆绑在一起。解压缩。

      • 将lib中的文件(.a,.dll.a)复制到C:\ PF \ msys64 \ mingw64 \ lib。复制pkgconfig文件夹,其中包含.pc文件。
      • 将include中的文件复制到C:\ PF \ msys64 \ mingw64 \ include。
      • 将C:\ PF \ gtk + -2.22.1 \ bin添加到路径中。
    2. (2)和(3)可能是多余的。我不知道 - 我做了两件事。

      此时你可以做" cabal安装cairo"。 (警告:如果您的最终目标是其他目标,您可能不希望" cabal安装"中间包,请参阅https://wiki.haskell.org/Cabal/Survival#Issue_.232_--_Not_installing_all_the_packages_in_one_go。) 有关指定extra-include-dirs和extra-lib-dirs的语法,请参阅(4)(但如果您复制了上面的文件,则不应该这样做),

      任何时候你

      Missing (or bad) header file
      

      检查是否将* .h文件复制到mingw64 \ include和/或将include文件夹添加到PATH。如果问题仍然存在,请使用cabal install -v3获取详细的错误消息。

      如果你得到像

      这样的东西
      cairo-0.13.1.0: include-dirs: /mingw64/include/freetype2 is a relative path
      which makes no sense (as there is nothing for it to be relative to). You can
      make paths relative to the package database itself by using ${pkgroot}. (use
      --force to override)
      

      尝试--ghc-pkg-options =" - 强制" (如https://github.com/gtk2hs/gtk2hs/issues/139所述)。

      1. 获取SDL。否则你会得到

        configure:error:***找不到SDL!从www.libsdl.org获取SDL。 如果您已安装它,请在路径中查看它。如果问题依旧, 请发送邮件到./configure --version中显示的地址 指示您的平台,配置脚本的版本和问题。 无法安装SDL-0.6.5.1

      2. 按照(2)中的说明获取sdl / sdl2库。 (请参阅此处的说明Installing SDL on Windows for Haskell (GHC)。)

        新版本helm-0.7.1需要sdl2,但写作时helm-0.7.1还存在其他依赖性问题。从http://sourceforge.net/projects/msys2/files/REPOS/MINGW/x86_64/下载SDL(直到下载链接到编写http://sourceforge.net/projects/msys2/files/REPOS/MINGW/x86_64/mingw-w64-x86_64-SDL-1.2.15-7-any.pkg.tar.xz.sig/download时的最新版本),解压缩。 " cabal安装sdl"给出

        * Missing (or bad) header file: SDL/SDL.h
        * Missing C library: SDL
        This problem can usually be solved by installing the system package that
        provides this library (you may need the "-dev" version). If the library is
        already installed but in a non-standard location then you can use the flags
        --extra-include-dirs= and --extra-lib-dirs= to specify where it is.
        

        所以我们指定dirs的位置(根据你提取sdl的位置改变名称)

        cabal install sdl --extra-include-dirs=C:/PF/sdl\include --extra-lib-dirs=C:/sdl/lib
        

        如果您有SDL2(http://libsdl.org/download-2.0.php)(对于较新版本的Helm):在发布版本中有一个致命错误尚未修复。 (如果你没有修复它,cabal安装-v3取决于它的东西会给出错误

        winapifamily.h: No such file or directory 
        

        "winapifamily.h: No such file or directory" when compiling SDL in Code::Blocks)下载https://hg.libsdl.org/SDL/raw-file/e217ed463f25/include/SDL_platform.h,替换include文件夹和C:/ PF / msys64 / mingw64 / include / SDL2中的文件。

        1. http://code.haskell.org/gtk2hs下载gtk2hs并运行
        2. 以下

          cd gtk2hs/tools
          cabal install
          cd ../glib
          cabal install
          cd ../gio
          cabal install
          cd ../pango
          cabal install --ghc-pkg-options="--force"
          

          (也许你之前已经安装了glib和gio?我这样做了,因为正常安装Pango会给我造成错误(https://github.com/gtk2hs/gtk2hs/issues/110

          pango-0.13.1.0: include-dirs: /mingw64/include/freetype2 is a relative path
          which makes no sense (as there is nothing for it to be relative to). You can
          make paths relative to the package database itself by using ${pkgroot}. (use
          --force to override)
          
          1. 一旦Helm开发人员更新了东西,你就应该能够做到这一点。但是现在似乎存在依赖性问题。对我来说,cabal会自动尝试安装helm-0.4(可能是因为0.4并没有给出依赖关系的上限,而较新的版本会这样做。你可以尝试" cabal解包"删除上限。 ..)。然后

            cabal unpack helm-0.4

          2. 安装会出错,因为"纯粹"被转移到Prelude。打开helm-0.4 \ src \ FRP \ Helm \ Automaton.hs并更改第17行:

            import Prelude hiding (id, (.), pure)
            

            现在

            cabal install
            
            1. 尝试使用Helm编译和运行程序
            2. (这是0.4 - 如果您尝试使用新的Helm,请在网站上查看更新的样本)

              import FRP.Helm
              import qualified FRP.Helm.Window as Window
              
              render :: (Int, Int) -> Element
              render (w, h) = collage w h [filled red $ rect (fromIntegral w) (fromIntegral h)]
              
              main :: IO ()
              main = run $ fmap (fmap render) Window.dimensions
              

              如果您收到有关缺少.dll(sdl.dll)的错误,请在bin /文件夹中找到它并将该文件夹添加到PATH(或将其复制到路径上的某个位置)。