2011-12-20 2 views
3

에 다시 :비밀 결사단 내가 thusly 히 <a href="http://hackage.haskell.org/package/file-embed" rel="nofollow">file-embed</a> 패키지를 사용하고 내장 된 파일 변경

import qualified Data.ByteString as B 
import qualified Data.ByteString.Internal as B (w2c) 
import qualified Data.FileEmbed as E 

initWindow = do 
    b <- Gtk.builderNew 
    let glade = map B.w2c $ B.unpack $ $(E.embedFile "window.glade") in 
     Gtk.builderAddFromString b glade 
    ... 

이 도당이 경우에도 단지 빈터 파일 변경 사항을이 파일을 다시 만들 수 있습니까?

+0

'other-filrs' 카테고리를 사용해 보셨습니까? –

+0

음,'data-files'가 있습니다. 그러나 배포 할 파일이 정확히 하나 있다는 생각이 듭니다. 내가 필요한 것은 명시 적으로 .hs 파일을 glade 파일에 의존하게 만드는 방법입니다. –

답변

3

GHC 7.4/7.6에서 지원됩니다. 문제는 컴파일러가 TemplateHaskell 스플 라이스가 파일 종속성을 추가하지 못하게한다는 것입니다. 자세한 내용은 this ticket을 참조하십시오.

이 변경 토지, 당신은 새로운 embedFile' 기능을 만들려면 다음 코드를 사용할 수 있습니다

:

이 당신이 TH 기능을 사용하는 곳에서 별도의 모듈에 있어야한다
import Data.FileEmbed 

import Language.Haskell.TH.Syntax 
import Language.Haskell.TH.Lib 

embedFile' :: FilePath -> Q Exp 
embedFile' path = do 
    qAddDependentFile path 
    embedFile path 

.