如何获取堆栈构建/安装以包含资源文件(配置,图像等)

sar*_*ara 6 haskell haskell-stack

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

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

Mic*_*man 6

有两种选择.我假设您正在寻找的是数据文件.要做到这一点,你基本上:

  1. 将相关文件添加到文件中的data-files字段,.cabal以便在构建程序包时安装它们
  2. Paths_package_name模块添加到您other-modules.cabal文件中(替换package_name为您的包名)
  3. Paths_*在需要的地方导入该模块
  4. 使用生成的getDataFileName :: FilePath -> IO FilePath函数获取所需数据文件的绝对路径

另一种方法是使用Template Haskell将数据文件内容嵌入可执行文件本身,例如使用file-embed包.