如何使用堆栈构建/安装来包含资源文件(配置,图像等)

时间:2017-07-29 14:09:40

标签: haskell haskell-stack

在选择堆栈作为开始编写非平凡的haskell程序(大于单个文件)的一步之后,我遇到了不知道如何让堆栈识别.ini文件等问题。它似乎不适合.cabal或stack.yaml文件中的任何位置。

为了澄清:在运行堆栈构建/安装之后,生成的.exe文件夹没有资源,因此程序崩溃时会出现一堆IO错误(找不到文件)。

1 个答案:

答案 0 :(得分:6)

有两种选择。我假设你正在寻找的那个是data files。要做到这一点,你基本上是:

  1. 将相关文件添加到data-files文件中的.cabal字段,以便在构建程序包时安装它们
  2. Paths_package_name模块添加到other-modules文件中的.cabal(用您的软件包名称替换package_name
  3. Paths_*模块导入到需要的位置
  4. 使用生成的getDataFileName :: FilePath -> IO FilePath函数获取所需数据文件的绝对路径
  5. 另一种方法是使用Template Haskell将数据文件内容嵌入可执行文件本身,例如使用file-embed包。