2011-12-20 1 views
3

J'utilise le paquet file-embed ainsi:Cabal reconstruction sur le changement de fichier intégré

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

Est-il possible de faire cabale reconstruire ce fichier, même lorsque seuls les modifications du fichier Glade?

+0

Avez-vous essayé d'utiliser la catégorie 'other-filrs'? –

+0

Eh bien, il y a 'data-files', mais j'aime l'idée d'avoir exactement un fichier à distribuer. Ce dont j'ai besoin, c'est d'un moyen pour que le fichier .hs dépende explicitement du fichier glade. –

Répondre

3

La prise en charge sera/a été ajoutée dans GHC 7.4/7.6. Le problème est que le compilateur n'autorise pas les épissures TemplateHaskell à ajouter des dépendances de fichiers pour le moment. Voir this ticket pour plus d'informations.

Lorsque ces terres de changement, vous pouvez utiliser le code suivant pour créer une nouvelle fonction 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 

Ce doit être dans un module distinct de l'endroit où vous utilisez la fonction TH.

Questions connexes