2017-10-08 5 views
0

Je regarde le module suivant: https://hackage.haskell.org/package/boxes-0.1.4/docs/src/Text-PrettyPrint-Boxes.htmlComment ajouter une définition de CPP dans cabal/stack?

qui a contenu:

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

Comment puis-je activer/define la valeur TESTING - à des fins de développement? Idéalement, j'aimerais que ce soit construit/activé dans une session GHCi.

+0

Si vous appelez 'stack test', l'indicateur est défini automatiquement - pour le moment, il n'y a pas d'indicateur cabal pour activer ce drapeau CPP. – epsilonhalbe

Répondre

1

Je dois me corriger - le commentaire que j'ai donné est totalement et totalement faux.

> 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 

fonctionne très bien.

+0

Cela semble fonctionner uniquement lorsque 'stack ghci' est invoqué sur le projet' boxes' plutôt que lorsqu'il est inclus en tant que dépendance via cabal. –

+1

vous pouvez envoyer une demande de tirage aux boîtes et fournir un drapeau de cabale, et utiliser votre dépôt github en attendant, la pile a intégré des options pour utiliser un repo comme source; pour la cabale je ne l'ai pas utilisé depuis un moment, donc je ne sais pas si c'est une option ici. – epsilonhalbe

+0

si vous avez besoin de la fonction 'content' pour autre chose que des tests - je demanderais au mainteneur l'intention de cacher cette fonction! Il y a beaucoup de choses qui sont commodes, mais qui augmentent le risque ou l'autre lorsqu'il est utilisé. – epsilonhalbe