2017-01-08 13 views
2

Wie kann ich eine lokale (dh es ist auf meiner Festplatte, nicht im Internet) .hs-Datei "installieren", um es über mehrere Programme zu verwenden? Insbesondere wenn ich die Bibliothek bearbeite, sollten diese Bearbeitungen für alle Programme verfügbar sein, also kein Kopieren-Einfügen der Bibliothek in das Verzeichnis jedes Programms.Installieren Sie lokale Bibliothek

Um meine Programme zu kompilieren, möchte ich immer noch ghc main.hs eingeben, keine Seite mit Dateipfaden.

Dies kann aus dem oben genannten offensichtlich sein, aber ich habe keine Kenntnisse von Cabal.

+3

1. Lernen Sie, wie Sie Ihr Paket cabalize 2. 'cabal install'. –

+0

Ok, ich werde dann kopieren. Es ist ein Chaos, aber es funktioniert zumindest. –

Antwort

1
  1. Stellen Sie sicher, die richtige Haskell-Plattform installiert haben, einschließlich cabal. Alternativ können Sie stack verwenden, die moderner und in vielerlei Hinsicht besser ist, aber IMO cabal ist noch praktischer für ein einfaches Projekt wie Ihres.
    Im Folgenden wird davon ausgegangen, dass Sie cabal auf einer typischen Linux-Maschine verwenden.

  2. Wenn nicht schon geschehen, geben Sie Ihrer Datei einen aussagekräftigen hierarchischen Modulnamen, je nachdem, was es tut. module Video.Demuxing.FFMPEG oder Data.List.Shuffle.Deterministic, zum Beispiel. Nehmen wir an, Sie nennen es Foo.Bar.Baz. I.e. sollte die Datei mit

    module Foo.Bar.Baz where 
    ... -- start code 
    
  3. Legen Sie die Datei in einer entsprechenden Ordnerstruktur, dh

    1. falls noch nicht geschehen, stellt ein neues Projektverzeichnis, zum Beispiel

      mkdir /home/Uꜱᴇʀɴᴀᴍᴇ/haskell/foobar 
      cd /home/Uꜱᴇʀɴᴀᴍᴇ/haskell/foobar 
      
    2. beginnen

      In diesem Projektverzeichnis erstellen Sie ein Unterverzeichnis Foo, darin ein Verzeichnis Bar, und legen Sie Ihre Datei als Baz.hs.

      mkdir -p Foo/Bar 
      cp WʜᴇʀᴇEᴠᴇʀ/Yᴏᴜʀ/Fɪʟᴇ/Wᴀꜱ/Bᴇꜰᴏʀᴇ.hs Foo/Bar/Baz.hs 
      
  4. den Teil einer neuen Kabale Bibliotheksdatei machen.

    cabal init 
    

    Dies wird Ihnen ein paar Fragen stellen, hoffentlich wird klar sein, was zu wählen. In den meisten Fällen sind die Standardeinstellungen in Ordnung. Drücken Sie in diesem Fall immer nur , geben Sie ein.

  5. Setzen Sie alles unter Versionskontrolle, wenn Sie nicht bereits haben. (Wenn Sie nicht wissen, was das ist, empfehle ich Ihnen, einige Github-Tutorials zu lesen. Sie können diesen Schritt überspringen, aber je früher Sie sich an VCS gewöhnen, desto besser.)

  6. Installieren Sie Ihr Projekt lokal.

    cabal install 
    
  7. Wenn alles fehlerfrei gearbeitet hat, können Sie, dann in einer Datei Haskell in irgendwo anders auf dem Computer gespeichert sind, einfach

    import Foo.Bar.Baz 
    

    und haben alles, was availably Sie in diesem Projekt definiert haben Modul.Keine Notwendigkeit, GHC zu sagen, wo Foo.Bar.Baz beim Kompilieren gespeichert wird, hat es an diesem Punkt bereits registriert. Sie können ghci auch überall starten und :m +Foo.Bar.Baz.

+0

Nach der Frage nach dem Quellverzeichnis beschwert sich cabal init (Warning) über fehlende Abhängigkeiten - Librarys, die ich nicht importiere, wie Text.Parsec, Crypto.MAC.SipHash, Graphics.UI.Threepenny. –

+0

Aha. Klingt wie ein Thema für eine separate Frage. – leftaroundabout

Verwandte Themen