我正在使用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重建此文件?
答案 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功能的单独模块相同。