2014-09-03 75 views
1

背景安裝SDL:在Windows上哈斯克爾(GHC)

我一直在使用光澤庫一些簡單的圖工作。但是當一些更具互動性的事情發生時,我發現我想要一個更強大的圖書館。在做了一些研究之後,我決定我喜歡SDL庫的功能,並想嘗試爲它安裝Haskell綁定。我不得不在這一點上失敗。

1部分:

如何安裝和配置SDL的二進制文件,使他們可以通過綁定Haskell的使用?

2部分:

其中關於Hackage的衆多不良記錄SDL包之一是當前的首選社區結合?我如何獲得該軟件包以正確安裝?

3部分:(可選)

如果SDL是不適合Haskell的發展是什麼的首選替代?

+0

你在運行什麼操作系統? – Mokosha 2014-09-03 03:12:45

+1

@Mokosha標題提及Windows。 – MasterMastic 2014-09-03 04:49:48

+0

我想要解決第3部分: SDL和Haskell很好地結合在一起,但如果您真的想要充分利用Haskell的強大功能,無論是作爲功能語言,還是GUI應用程序中美麗而神奇的語言:使用FRP ([功能反應式編程](http://www.haskell.org/haskellwiki/Functional_Reactive_Programming))。在實踐方面,我建議使用反應性香蕉或鈉 - 它們幾乎是相同的(這很有趣,因爲它從來就不是這樣的意圖,而恰巧碰巧是這樣)。 – MasterMastic 2014-09-03 04:54:58

回答

4

我將回答您對SDL2的問題(對於SDL1也應該進行一些修改)。

  1. 爲Windows (How to install pkg config in windows?

    這個工具是非常重要的安裝pkg配置。它被各種Cabal軟件包用來搜索庫幷包含鏈接和編譯的指導。

  2. 下載SDL的開發庫的Windows/MinGW的: http://libsdl.org/release/SDL2-devel-2.0.3-mingw.tar.gz

    如果您已經安裝了哈斯克爾平臺的32位版本,解壓文件夾的i686-W64-mingw32的

    對於64位版本解壓x86_64的-W64-mingw32的

    您將獲得以下佈局:

    包括
    份額

    LIB

  3. 「註冊」 的使用pkg配置庫。

    將lib/pkgconfig/sdl2.pc複製到pkg-config.exe的文件夾中,或相應地修改/創建PKG_CONFIG_PATH。檢查您是否正確設置了所有內容:

    C:\ pkg-config --list-all | grep的SDL2

    SDL2 SDL2 - 簡單直接層是一個跨平臺的多媒體庫 旨在提供通過OpenGL低水平訪問音頻,鍵盤,鼠標 ,搖桿,3D硬件,和2D視頻幀緩衝。

  4. 添加bin文件夾到PATH環境變量。

  5. 通過Cabal安裝程序安裝sdl2軟件包,並告訴Cabal在哪裏可以找到您的庫。

    實施例: 小集團安裝SDL2 --extra-包括-顯示目錄= C:\ lib中\ SDL2 \包括--extra-LIB-顯示目錄= C:\ lib中\ SDL2 \ lib中\

爲了測試我安裝,我寫了一個小例子:

https://github.com/ftl2014/haskell-stuff/blob/master/sdl/

買者自負:

如果驚天動地抱怨一個「失蹤」的圖書館,它可能是這樣牛逼實際上發現了帽子庫,但它不兼容(例如,使用32位而不是64位版本)或損壞。頭文件也是如此。 由於某些原因,Cabal抱怨沒有找到SDL.h,我不得不在存檔的根目錄下使用頭文件(但也許我只是喝了太多Kool-aid)。

1

我是不是能夠得到它安裝在我的系統。這是我的嘗試。奇怪的是,我能夠獲得配置查找頭文件,但不是實際的二進制文件。

讓我們試試吧。我已經安裝了新的2014 Haskell平臺。

cabal install sdl 

Configuring SDL-0.6.5... 
setup.exe: The package has a './configure' script. This requires a Unix 
compatibility toolchain such as MinGW+MSYS or Cygwin. 
Failed to install SDL-0.6.5 

Haskell Platform中的GHC附帶了MinGW,所以我們可能需要安裝MSYS。所述MSYS page說安裝minggw get,它說安裝

一種自動GUI安裝助手稱爲mingw-get-setup.exe爲第一次安裝的優選方法。這將引導您的設置MinGW的,得到安裝正確;您將使用它來執行進一步的軟件包安裝並管理您的安裝。

運行使用默認選項安裝程序爲我們提供了以下畫面:

mingw-get GUI

我們已經從MinGW的安裝Haskell的平臺,所以我們會在只點擊最後一個項目列表,msys-base,然後選擇「Mark for Installation」。然後,在左上角的「安裝」菜單中,選擇「應用更改」。這將詢問您是否確定繼續,我們選擇「應用」

此安裝程序未將MSYS基路徑,我們可以把它添加到路徑,並嘗試安裝SDL再次

set PATH=C:\MinGW\msys\1.0\bin\;%PATH% 
cabal install sdl 

Configuring SDL-0.6.5... 
configure: WARNING: unrecognized options: --with-compiler, --with-gcc 
checking for sdl-config... no 
checking for sdl11-config... no 
configure: error: *** SDL not found! Get SDL from www.libsdl.org. 
If you already installed it, check it's in the path. If problem remains, 
please send a mail to the address that appears in ./configure --version 
indicating your platform, the version of configure script and the problem. 
Failed to install SDL-0.6.5 

我們需要下載並安裝libsdl。我去了libsdl download page和下載的Win32開發庫,SDL-devel-1.2.15-mingw32.tar.gz。我提取了這個檔案(7-zip可以提取tar檔案和gzip壓縮文件)。爲方便起見,我將SDL-1.2.15目錄移至c:。要添加該的路徑,由以前的錯誤的建議,然後嘗試再次

set PATH=C:\SDL-1.2.15\bin\;%PATH% 
cabal install 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. 
If the header file does exist, it may contain errors that are caught by the C 
compiler at the preprocessing stage. In this case you can re-run configure 
with the verbosity flag -v3 to see the error messages. 

我們可以把這個錯誤的一部分消失加入建議--extra-include-dirs標誌,但仍得到以下錯誤

cabal install sdl --extra-include-dirs=c:\SDL-1.2.15\include 

* 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. 

添加--extra-lib-dirs國旗c:\SDL-1.2.15\binC:\SDL-1.2.15\libc:\SDL-1.2.15未能解決這個問題。

+0

Windows 64位呢? (SDL頁面只有32位開發版本。) – holdenlee 2015-11-26 17:38:20

+0

對於64位,http://sourceforge.net/projects/msys2/files/REPOS/MINGW/x86_64/(直接下載鏈接到最新版本,編寫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) – holdenlee 2015-11-26 22:50:39