Кроссплатформенные make-файлы для небольшого проекта на Haskell? - PullRequest
7 голосов
/ 11 мая 2011

Недавно я создал небольшую однофайловую утилиту для Haskell, которая будет включена в раздел «Инструменты» моего в противном случае чистого PHP-проекта (я знаю, что он поднял брови).

Изначально я проверил оба .hsисходный файл, а также двоичный файл, сгенерированный на моей машине для разработки Linux в используемую нами систему контроля версий (Git).Но теперь, когда я больше об этом думаю, я хотел бы создать кроссплатформенные make-файлы, чтобы они могли быть вместе с ним, чтобы другие разработчики могли легко скомпилировать их в своих системах.

Существуют ли лучшие рекомендации / рекомендации или дажелучше шаблоны Makefile доступны для скачивания?Ничего особенного, просто что-то, что позволяет разработчикам указать некоторые подробности об их настройке GHC и запустить простой скрипт для начала работы.

Ответы [ 2 ]

11 голосов
/ 11 мая 2011

Рекомендуемый способ распространения ваших проектов на Haskell - использовать Cabal .Cabal является как системой сборки, так и менеджером пакетов для кода на Haskell, и позволяет легко создавать код на Haskell на разных платформах, обрабатывая при этом зависимости.

Вот пример файла 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

Вы можете создать файл cabal в интерактивном режиме, набрав

$ cabal init

Затем Cabal задаст вам несколько простых вопросов и сгенерирует файл cabal на основе ваших ответов.Затем вы можете настроить этот файл в соответствии с вашими потребностями.


Чтобы установить пакет, просто запустите его в каталоге пакетов

$ cabal install

Вы также можете загрузить свой пакет на Hackage , стандартный репозиторий пакетов Haskell.Таким образом, люди могут загрузить и установить ваш пакет (и любые зависимости) за один шаг с помощью команды

$ cabal install mypackage

Также существуют инструменты для преобразования пакетов Cabal в другие менеджеры пакетов, если вы не хотитетребовать, чтобы ваши пользователи установили Cabal (хотя Cabal включен в Haskell Platform ).

Он также хорошо работает с Haddock для создания справочной документации для вашего пакета,Ознакомьтесь с некоторыми пакетами на Hackage для примера результатов.

В настоящее время также ведется работа по улучшению поддержки наборов тестов в Cabal.

В целом, эти и многие другие причины делают использование Cabal большим преимуществом для организации, создания и распространения ваших проектов на Haskell.

2 голосов
/ 11 мая 2011

Если вы можете позволить себе другую зависимость, попробуйте cabal . Это система сборки, специально разработанная для Haskell.

...