4

因此,我正在使用文件嵌入包:

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

即使只有 glade 文件发生变化,是否可以让 cabal 重建这个文件?

4

1 回答 1

4

GHC 7.4/7.6 中将/已添加对此的支持。问题是编译器还不允许 TemplateHaskell 拼接添加文件依赖项。请参阅此票以获取更多信息。

当此更改生效时,您可以使用以下代码创建一个新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 功能的单独模块中。

于 2011-12-20T04:20:36.330 回答