Можно ли использовать cmake для проектов на Haskell? - PullRequest
13 голосов
/ 11 мая 2011

Я планирую проект, написанный на Хаскеле, может быть, есть и некоторые части в Си. Для системы сборки я выбрал общий выбор для программ на Haskell, главным образом потому, что хочу узнать, как работает сборка программ на других языках.

Я слышал о CMake и думаю, что это довольно крутой продукт. Хотя я не знаю, как его использовать, я хочу использовать CMake для этого проекта, просто чтобы узнать, как он работает. Googleing не выявил никаких фактов о том, как использовать cmake с haskell, и все прочитанные мною учебники были довольно запутанными. Возможно ли, и если да, как это возможно, скомпилировать проект, написанный на Haskell, используя CMake?

Ответы [ 4 ]

17 голосов
/ 12 мая 2011

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

Я бы рекомендовал использовать cabal build -v, чтобы увидеть команды, испускаемые Cabal, а затем переписатьих в форму CMake.

Или используйте CMake для вызова cabal по коду Haskell - это, вероятно, будет менее раздражающим.

7 голосов
/ 25 октября 2011

Я написал простую оболочку cmake для пакетов cabal и поместил ее здесь:

http://bitbucket.org/arrowd/cmake-findcabal (используйте кнопку "get source", чтобы загрузить ее).

Сейчасон работает для меня на Windows и FreeBSD, но я все же планирую улучшить его позже.Я вставил это в ответ, чтобы люди могли найти его в Google, как и я.

5 голосов
/ 15 мая 2011

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

Для системы сборки я отказался от общего выбора для программ на Haskell, главным образом потому, что я хочу узнать, как работает сборка программ на других языках.

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

Я бы порекомендовал сделать то, что предложил Дон.Посмотрите на вывод cabal -v для сборки под вашим конкретным компилятором (возможно, ghc) и репликации этих шагов в CMake.

Но потом, как только вы поймете шаги, я серьезно подумаю над тем, чтобы взять эти знания и переместитьобратно в Кабал.Только для того, чтобы позволить ему решать вопросы поддержки нескольких компиляторов, платформ, управления пакетами и т. Д. Тем самым уменьшая хрупкость вашей системы сборки и упрощая компоновку и совместное использование вашей работы.

Для остроумияЯ не могу вспомнить ни одного пакета или бинарника, созданного не Cabal, который активно используется сообществом, кроме самого ghc.

Однако я желаю вам удачи в вашем путешествии в недрапроцесс сборки!

0 голосов
/ 29 марта 2014

Я переписал начальную работу @ arrowdodger, в процессе исправления пары ошибок:

  • Не может использоваться из каталога cmake/ в проекте из-за жестко закодированных путей
  • Имели место некоторые переменные Fortran / CXX (которые вызывали некорректное поведение)
  • Множество кода, не относящегося к Haskell, может быть удалено, другой код добавлен на основе более новых версий языковых файлов C / CXX, которые поставляются с CMake

Хранилище можно найти по адресу:

https://github.com/kvanberendonck/cmake-haskell

Прекрасно работает для меня, и скорость сборки, которую я могу получить из ninja, чрезвычайно впечатляет.

...