2017-10-08 12 views
0

Ich betrachte das folgende Modul: https://hackage.haskell.org/package/boxes-0.1.4/docs/src/Text-PrettyPrint-Boxes.htmlWie füge ich eine CPP-Definition innerhalb von cabal/stack hinzu?

Welche Inhalte hat:

module Text.PrettyPrint.Boxes 
    (-- * Constructing boxes 
#ifdef TESTING 
     Box(Box, content) 
#else 
     Box 
#endif 

Wie kann ich aktivieren/den TESTING Wert definieren - für Entwicklungszwecke? Idealerweise möchte ich dies in einer GHCi-Sitzung eingebaut/aktiviert haben.

+0

Wenn Sie 'stack test' aufrufen, wird das Flag automatisch gesetzt - momentan gibt es kein cabal-Flag, um dieses CPP-Flag zu aktivieren. – epsilonhalbe

Antwort

1

Ich muss mich selbst korrigieren - der Kommentar, den ich gab, ist völlig falsch.

> git clone git://github.com/treeowl/boxes.git 
> cd boxes 
> stack init 
> stack ghci --ghc-options=-DTESTING 
split-0.2.3.2: using precompiled package 
boxes-0.1.4: configure (lib) 
Configuring boxes-0.1.4... 
boxes-0.1.4: initial-build-steps (lib) 
Completed 2 action(s). 
Configuring GHCi with the following packages: boxes 
GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help 
Loaded GHCi configuration from ... 
[1 of 1] Compiling Text.PrettyPrint.Boxes (.../boxes/Text/PrettyPrint/Boxes.hs, interpreted) 
Ok, modules loaded: Text.PrettyPrint.Boxes. 
Loaded GHCi configuration from /tmp/ghci28386/ghci-script 
*Text.PrettyPrint.Boxes Text.PrettyPrint.Boxes> :t content 
content :: Box -> Content 

funktioniert einfach gut.

+0

Dies scheint nur zu funktionieren, wenn 'stack ghci' im' boxen'-Projekt aufgerufen wird, anstatt dann als Abhängigkeit über cabal. –

+1

Sie können eine Pull-Anfrage an Boxen senden und eine Cabal-Flag bereitstellen, und verwenden Sie Ihre Github-Repo in der Zwischenzeit hat Stack Optionen eingebaut, um ein Repo als Quelle zu verwenden; Für Kabale habe ich es eine Weile nicht mehr benutzt, also weiß ich nicht, ob das hier eine Option ist. – epsilonhalbe

+0

Wenn Sie die 'content' Funktion für etwas anderes als Testzwecke brauchen, würde ich den Betreuer nach der Absicht fragen, diese Funktion zu verbergen! Es gibt viele Dinge, die bequem sind, aber ein gewisses Risiko erhöhen oder ein anderes, wenn sie verwendet werden. – epsilonhalbe

Verwandte Themen