2017-01-08 4 views
2

Comment puis-je "installer" un fichier local (c'est-à-dire sur mon disque dur, pas sur Internet) .hs pour l'utiliser dans plusieurs programmes? Plus précisément, si je modifie la bibliothèque, ces modifications doivent être disponibles pour tous les programmes, donc pas de copier-coller de la bibliothèque dans le répertoire de chaque programme.Installer la bibliothèque locale

Pour compiler mes programmes, je veux toujours taper ghc main.hs, pas une page de chemins de fichier.

Cela peut être évident à partir de ce qui précède, mais je n'ai aucune connaissance de la cabale.

+3

1. Apprenez à cabaliser votre paquet 2. 'cabal install'. –

+0

Ok, je vais copier-coller ensuite. C'est un gâchis mais ça marche au moins. –

Répondre

1
  1. Assurez-vous que vous avez la plate-forme Haskell appropriée installée, y compris cabal. Alternativement, vous pouvez utiliser stack, qui est plus moderne et à bien des égards mieux, mais IMO cabal est encore plus pratique pour un projet simple comme le vôtre.
    Ce qui suit suppose que vous utilisez cabal sur une machine Linux typique.

  2. Si ce n'est déjà fait, donnez à votre fichier un nom de module hiérarchique significatif, en fonction de ce qu'il fait. module Video.Demuxing.FFMPEG ou Data.List.Shuffle.Deterministic, par exemple. Supposons que vous l'appelez Foo.Bar.Baz. C'est à dire. le fichier doit commencer par

    module Foo.Bar.Baz where 
    ... -- start code 
    
  3. Placez le fichier dans une structure de dossier correspondant, à savoir

    1. si pas déjà fait, créez un nouveau répertoire de projet, par exemple

      mkdir /home/Uꜱᴇʀɴᴀᴍᴇ/haskell/foobar 
      cd /home/Uꜱᴇʀɴᴀᴍᴇ/haskell/foobar 
      
    2. Dans ce répertoire de projet, créez un sous-répertoire Foo, dans le répertoire Bar, et placez-y le fichier Baz.hs.

      mkdir -p Foo/Bar 
      cp WʜᴇʀᴇEᴠᴇʀ/Yᴏᴜʀ/Fɪʟᴇ/Wᴀꜱ/Bᴇꜰᴏʀᴇ.hs Foo/Bar/Baz.hs 
      
  4. Faire la partie de fichier d'une nouvelle bibliothèque cabale.

    cabal init 
    

    Cela vous poser quelques questions, nous espérons qu'il sera clair que choisir. Pour la plupart, les valeurs par défaut seront bien, dans ce cas toujours appuyez simplement sur entrez. Mettez tout sous contrôle de version, si ce n'est pas déjà fait. (Si vous ne savez pas ce que c'est, je vous suggère de lire quelques tutoriels Github.Vous pouvez passer cette étape, mais mieux vous vous habituerez à certains VCS, mieux ce sera.)

  5. Installez votre projet localement.

    cabal install 
    
  6. Si tout a fonctionné sans erreurs, vous pouvez alors, dans un fichier Haskell stocké dans un autre endroit sur l'ordinateur, il suffit

    import Foo.Bar.Baz 
    

    et ont tout availably que vous avez défini dans ce projet module.Pas besoin de dire à GHC où Foo.Bar.Baz est stocké lors de la compilation, il l'a déjà enregistré à ce stade. Vous pouvez également lancer ghci n'importe où et :m +Foo.Bar.Baz.

+0

après avoir demandé le répertoire source, cabal init se plaint (à propos des dépendances manquantes - les bibliothèques que je n'importes pas, comme Text.Parsec, Crypto.MAC.SipHash, Graphics.UI.Threepenny. –

+0

Aha. Cela ressemble à un sujet pour une question distincte. – leftaroundabout