Как я могу заставить Cabal искать внешние программы? - PullRequest
2 голосов
/ 18 апреля 2010

Я пытаюсь написать программу на Haskell, которая требует вывода внешних программ (таких как lame, mp3-кодировщик). Хотя объявить зависимость от библиотеки очень легко, как можно объявить зависимость от исполняемого файла?

1 Ответ

2 голосов
/ 18 апреля 2010

В настоящее время вы не можете добавить в файл .cabal зависимость для внешних исполняемых файлов, кроме списка известных инструментов сборки (см. Build-tools: alex, например).

Однако вы можете указать тип сборки: Configure, а затем использовать отдельный скрипт configure для поиска любых дополнительных двоичных файлов (например, скрипт конфигурирования на основе autoconf отлично подходит и может быть использован для установки констант в вашем источнике ).

Обратите внимание, что поиск зависимости во время выполнения - такой как кодировщик lame - во время компиляции может быть плохой идеей, поскольку среды сборки и запуска отличаются во многих системах пакетов. Возможно, лучше было бы динамически искать требуемые двоичные файлы при запуске программы.

Например, hmp3 ищет mpg321 с

     mmpg <- findExecutable (MPG321 :: String)

где MPG321 - имя программы, определенное с помощью параметра ./configure. Для получения дополнительной информации см. Пикши:

http://hackage.haskell.org/packages/archive/directory/latest/doc/html/System-Directory.html#v:findExecutable

...