2017-07-25 3 views
0

Dans le Cabal User Guide il est dit que Cabal est souvent comparé à autoconf et automake depuis l'interface de ligne de commande pour les packages configuration réellement et de construction suit les mêmes étapes de étapes:Pourquoi configurer cabal?

./configure --prefix=... 
make 
make install 

par rapport à

cabal configure --prefix=... 
cabal build 
cabal install 

Mon La compréhension est que ./configure utilise un fichier de configuration (produit par autoconf) pour adapter le processus make à l'environnement dans lequel il sera exécuté et aussi pour vérifier les dépendances. Donc, ./configure ont donc toujours une "entrée" à se conformer. Mais si cabal configure ne reçoit aucun argument, que fait-il, et pourquoi est-il nécessaire avant d'exécuter cabal build?

Répondre

2

L'étape cabal configure a au moins deux choses que je connais:

  • Vérifiez que la description du paquet OK parse.
  • Vérifiez que toutes les dépendances requises sont déjà installées (et signalez une erreur si ce n'est pas le cas).

Fondamentalement, il exécute le solveur de contraintes pour décider exactement quels paquets vous allez construire. (Par exemple, si vous avez installé plusieurs versions de ByteString, quelle version allez-vous utiliser?) Cela dépendra peut-être de la version à laquelle les paquets dont vous dépendez ...)

Je crois aussi qu'il est possible de fournir des options au moment de la configuration, qui change exactement les caractéristiques du paquetage (mais je n'ai pas d'expérience avec ça).

Je pense d'abord que vous aviez appeler configure avant de pouvoir appeler build, mais je crois que maintenant l'outil de ligne de commande cabal fait cette étape pour vous automatiquement dans de nombreux cas. (Par exemple, cabal run semble maintenant reconfigurer automatiquement si le fichier de description de paquet est plus récent que le DB de configuration.)