J'aurais deux questions très liées :
Question 1: Cabal est un bon outil pour installer/distribuer ses packages, mais je voulais savoir, lors du développement d'un projet en Haskell, utilisez-vous cabal pour vos compilations répétées ou bien compilez-vous à la main avec ghc --make ?
Question 2: Actuellement, je bosse sur le binding d'une librairie appelée SFML (plus précisément son binding C CSFML, si certains connaissent). Il s'agit d'une SDL-like (mais en mieux).
Je progresse ainsi dans mon développement : j'ai un exécutable de test, que j'étoffe un peu à chaque fois que je rajoute quelques fonctionnalités à mon binding, de manière à les utiliser vite fait. Actuellement j'ai un script shell qui compile ma lib, et un autre mon exécutable, méthode que je trouve un peu crade au vu de l'existence de cabal.
Auriez-vous une meilleure façon de procéder pratique pour le développement ? Via cabal-install ?
Le truc est que si je compile la lib à coup de 'cabal build' mon exécutable ne peut pas la trouver quand je fais 'ghc --make testHSFML.hs', pourtant cabal m'indique bien à la fin du build: "Registering HSFML-1.5..."
Je suis obligé de 'cabal install' ma lib, et je vais évidemment pas le faire à chaque modif dans le code.
Je n'arrive également pas à rajouter mon exécutable au .cabal. J'ai l'erreur suivante au configure si j'indique HSFML dans ses dépendances :
Il n'aime pas que l'exécutable du .cabal dépende de la lib qui est dans le même .cabal, on dirait. Mais le truc est que si je n'indique pas cette dépendance, au build j'ai :cabal: internal error: could not construct a valid install plan.
The proposed (invalid) plan contained the following problems:
The following packages are involved in a dependency cycle HSFML-1.5
Je pourrais faire 2 packages, mais pour le développement ça va être chiant...Could not find module `SFML.Direct.Types.Enums':
It is a member of the hidden package `HSFML-1.5'.
Perhaps you need to add `HSFML' to the build-depends in your .cabal file.
it is a hidden module in the package `HSFML-1.5'
J'utilise le Build-Type 'Simple', c'est peut-être ça qui ne va pas, je ne sais pas.
Partager