Cabal重建嵌入式文件更改

时间:2011-12-20 03:47:34

标签: haskell cabal rebuild

我正在使用file-embed软件包:

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

即使只有林间空地文件发生变化,是否可以让cabal重建此文件?

1 个答案:

答案 0 :(得分:3)

GHC 7.4 / 7.6中将添加对此的支持。问题是编译器不允许TemplateHaskell接头添加文件依赖性。有关详细信息,请参阅this ticket

当此更改发生时,您可以使用以下代码创建新的embedFile'函数:

import Data.FileEmbed

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

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

这必须与您使用TH功能的单独模块相同。