Regroupez les modules dans des packages (ou éventuellement créez des packages à module unique). Si vous ne l'avez pas déjà fait, read the Cabal user guide. Chaque paquet, comme n'importe quel autre code, devrait être sous contrôle de version (git, darcs, peu importe) bien que ce ne soit pas strictement nécessaire pour votre besoin.
Disons que vous avez un tel paquet, foo
, contenant les modules Common.Foo
et Common.Foo.Types
, à savoir que vous avez un dossier contenant Common/Foo.hs
et Common/Foo/Types.hs
et un fichier foo.cabal
avec exposed-modules: Common.Foo Common.Foo.Types
.
Les projets dans lesquels vous souhaitez utiliser Common.Foo
devrait alors également être des paquets cabale et, en dehors de la import Common.Foo
évidente dans les fichiers source Haskell, devrait avoir un fichier .cabal
avec build-depends: foo
.
Ensuite, chaque fois que vous avez changé les modules du paquet foo
, vous pouvez taper cabal install --force-reinstalls
† (à l'intérieur foo
répertoire s). Cela mettra à jour le registre de package local et lorsque vous aurez cabal configure
et cabal build
un autre projet utilisant foo
, il aura accès aux modifications.
Il faut aussi considérer en fait publishing your package on Hackage (bien sûr, assurez-vous de donner réellement un clair, descriptif nom!), Alors vous aurez même pas à vous soucier de la source et la compilation lorsque vous passez à une autre machine - cabale peut le faire pour vous.
† Le --force-reinstalls
est seulement nécessaire une fois que vous avez aussi install
ed l'un des paquets qui dépendent de foo
. Après avoir réinstallé foo
, vous devez ensuite puis également les reconstruire - c'est un peu un défaut dans la façon dont les registres d'installation cabal s'installe. Ce sera become unnecessary dans le futur.
Qu'est-ce que vous utilisez pour créer votre code? Pile ou Cabale? – arrowd
Vous pouvez créer des liens (si votre système de fichiers le supporte) vers les fichiers, de sorte que le mettre à jour à un endroit signifie également qu'il est mis à jour à d'autres endroits. –
@arrowd Cabal, bien que cela puisse changer je suppose –