如何让Cabal搜索外部程序?

时间:2010-04-17 22:27:20

标签: haskell cabal

我正在尝试编写一个需要输出外部程序的Haskell程序(例如lame,mp3编码器)。虽然在cabal中声明对库的依赖很容易,但是如何声明对可执行文件的依赖?

1 个答案:

答案 0 :(得分:2)

您目前无法在.cabal文件中为外部可执行文件添加依赖项,而不是已知构建工具列表(请参阅build-tools:alex)。

但是,您可以指定构建类型:配置,然后使用单独的配置脚本来搜索任何其他二进制文件(例如,基于autoconf的配置脚本完全正常,可用于在源代码中设置常量)。

请注意,在编译时搜索运行时依赖项(例如lame编码器)可能不是一个好主意,因为许多软件包系统上的构建和运行环境不同。在程序启动时动态搜索所需的二进制文件可能是个更好的主意。

例如,hmp3使用

搜索mpg321
     mmpg <- findExecutable (MPG321 :: String)

其中MPG321是通过./configure选项确定的程序名称。有关更多信息,请参阅haddocks:

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