Wenn ich die verschiedenen MIN_VERSION_
-Makros von Cabal in einem Haskell-Projekt verwende, wie kann ich sicherstellen, dass alle korrekt definiert sind, wenn ich keine Kabale verwende, z. beim Testen in GHCi?Wie verwende ich Cabal MIN_VERSION_ und andere Makros mit Ghci?
Antwort
Heutzutage unterstützt cabal
einen Unterbefehl cabal repl
, der die gesamte Einrichtung für Sie erledigt, so dass zumindest für ghci
Folgendes unnötig ist. Trotzdem:
Der Befehl cabal build
generiert die Datei dist/build/autogen/cabal_macros.h
, die alle Definitionen enthält, die Sie benötigen. Um diese Datei in einen ghc-Aufruf aufzunehmen, benötigen Sie die Flags -optP-include -optPdist/build/autogen/cabal_macros.h
.
Der Einfachheit halber können Sie die folgenden in einer .ghci
Datei im Projektverzeichnis platzieren:
:set -optP-include -optPdist/build/autogen/cabal_macros.h
, so dass Sie, um die Optionen nicht tippen jedes Mal, die Sie verwenden möchten GHCI.
Vorsicht: Die Makros werden entsprechend der Konfiguration definiert, als Sie zuletzt cabal build
ausgeführt haben, und werden nicht aktualisiert, wenn Sie neue Pakete installieren oder eine andere GHC-Version verwenden: dazu müssen Sie neu konfigurieren und das Paket neu erstellen.
(Danke an Simon Hengel auf der Bibliotheken Liste für diese Weisheit: http://www.haskell.org/pipermail/libraries/2012-September/018491.html).