在选择堆栈作为开始编写非平凡的haskell程序(大于单个文件)的一步之后,我遇到了不知道如何让堆栈识别.ini文件等问题。它似乎不适合.cabal或stack.yaml文件中的任何位置。
为了澄清:在运行堆栈构建/安装之后,生成的.exe文件夹没有资源,因此程序崩溃时会出现一堆IO错误(找不到文件)。
答案 0 :(得分:6)
有两种选择。我假设你正在寻找的那个是data files。要做到这一点,你基本上是:
data-files
文件中的.cabal
字段,以便在构建程序包时安装它们Paths_package_name
模块添加到other-modules
文件中的.cabal
(用您的软件包名称替换package_name
)Paths_*
模块导入到需要的位置getDataFileName :: FilePath -> IO FilePath
函数获取所需数据文件的绝对路径另一种方法是使用Template Haskell将数据文件内容嵌入可执行文件本身,例如使用file-embed包。