5 Stimmen

Wie kann ich mehrere Konfigurationen eines einzigen Haskell-Programms verwalten?

Was ist eine Alternative zu Autotools in der Haskell-Welt? Ich möchte in der Lage sein, zwischen verschiedenen Konfigurationen desselben Quellcodes zu wählen.

Zum Beispiel gibt es mindestens zwei Implementierungen von MD5 in Haskell: Data.Digest.OpenSSL.MD5 y Data.Digest.Pure.MD5 . Ich möchte den Code so schreiben, dass er herausfinden kann, welche Bibliothek bereits installiert ist, und die andere nicht installieren muss.

In C kann ich Autotools/Scons/CMake + verwenden. cpp . In Python kann ich fangen ImportError . Welche Werkzeuge sollte ich in Haskell verwenden?

14voto

nominolo Punkte 5025

In Haskell verwenden Sie Cabal-Konfigurationen. Im obersten Verzeichnis Ihres Projekts legen Sie eine Datei mit der Erweiterung .cabal , z.B., <yourprojectname>.cabal . Der Inhalt ist ungefähr:

Name:                myfancypackage
Version:             0.0
Description:         myfancypackage
License:             BSD3
License-file:        LICENSE
Author:              John Doe
Maintainer:          john@example.com
Build-Type:          Simple
Cabal-Version:       >=1.4

Flag pure-haskell-md5
  Description: Choose the purely Haskell MD5 implementation
  Default: False

Executable haq
  Main-is:           Haq.hs
  Build-Depends:     base-4.*
  if flag(pure-haskell-md5)
    Build-Depends:   pureMD5-0.2.*
  else
    Build-Depends:   hopenssl-1.1.*

En Cabal-Dokumentation enthält weitere Einzelheiten, insbesondere den Abschnitt über Konfigurationen .

2voto

Don Stewart Punkte 136046

Wie nominolo sagt, ist Cabal das richtige Werkzeug. Insbesondere die Syntax "Konfigurationen".

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X