2011-05-11 10 views
7

Hace poco construí una pequeña utilidad Haskell de un archivo para ser incluida en la sección de "herramientas" de mi proyecto PHP, que de otro modo sería puro (cejas levantadas, lo sé).Makefiles multiplataforma para pequeños proyectos Haskell?

Inicialmente revisé tanto el archivo fuente .hs como el binario generado en mi máquina de desarrollo Linux en el sistema de control de versiones que usamos (Git). Pero ahora que lo pienso más, me gustaría crear makefiles multiplataforma para que otros desarrolladores puedan compilarlo fácilmente en sus sistemas.

¿Existen algunas mejores prácticas/directrices, o mejor aún, plantillas de Makefile disponibles que puedo descargar? Nada especial, solo algo que les permite a los desarrolladores especificar algunos detalles sobre su configuración de GHC y ejecutar un script simple para comenzar.

Respuesta

11

La forma recomendada de distribuir sus proyectos Haskell es usar Cabal. Cabal es a la vez un sistema de compilación y un gestor de paquetes para el código Haskell, y facilita la compilación del código Haskell en diferentes plataformas mientras maneja las dependencias por usted.

He aquí un ejemplo de archivo de Cabal:

Name:   MyPackage 
Version:  0.0 
Cabal-Version: >= 1.2 
License:  BSD3 
Author:   Angela Author 
Synopsis:  Small package an utility program 
Build-Type:  Simple 

Executable myutility 
    Build-Depends: base 
    Main-Is:  Main.hs 
    Hs-Source-Dirs: src 

Se puede generar un archivo de Cabal forma interactiva mediante la ejecución de

$ cabal init 

Cabal A continuación, algunas preguntas simples y generar un archivo de Cabal en función de sus respuestas . Luego puede ajustar este archivo para que se ajuste a sus necesidades específicas.


Para instalar el paquete acaba de ejecutar esto en el directorio del paquete

$ cabal install 

También puede cargar el paquete a Hackage, el estándar Haskell paquete de repositorio. De esta manera, la gente puede descargar e instalar el paquete (y cualquier dependencia) en un solo paso con el comando

$ cabal install mypackage 

También existen herramientas para convertir paquetes de Cabal a otros gestores de paquetes, si no desea que se requiera tus usuarios tienen instalado Cabal (aunque Cabal está incluido en el Haskell Platform).

También funciona bien con Haddock para generar documentación de referencia para su paquete. Vea algunos de los paquetes en Hackage para ver un ejemplo de los resultados.

También se está trabajando actualmente para mejorar la compatibilidad con suites de prueba en Cabal.

En general, estas razones y muchas más hacen que sea un gran beneficio utilizar Cabal para organizar, construir y distribuir sus proyectos de Haskell.

+0

Gracias! Cabal es la solución perfecta para esto, y salió de la caja tanto en Linux como en Windows. La plantilla de cabal que proporcionó ayudó mucho, solo tuve que cambiar HUnit a base. –

+1

Tenga en cuenta que también puede usar 'cabal init' para crear un proyecto vacío. Finalmente, 'cabal' es parte de la [Plataforma Haskell] (http://hackage.haskell.org/platform), por lo que estará en todas sus máquinas si usa la distribución central. –

2

Si puede permitirse otra dependencia, intente cabal. Es un sistema de construcción especialmente diseñado para Haskell.

Cuestiones relacionadas