Gyö*_*sek 5 rebuild haskell cabal
我因此使用文件嵌入包:
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
...
Run Code Online (Sandbox Code Playgroud)
即使只有林间空地文件发生变化,是否也可以使 cabal 重建此文件?
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
Run Code Online (Sandbox Code Playgroud)
它必须位于与使用 TH 函数的位置不同的单独模块中。