首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cabal版本中包含数据文件

在cabal版本中包含数据文件
EN

Stack Overflow用户
提问于 2012-04-27 18:47:02
回答 2查看 2.4K关注 0票数 11

我有一个具有以下结构的包(好的,这大大简化了,但是……)

代码语言:javascript
复制
app/
  src/
    Main.hs
  data/
    data.txt
  app.cabal
  Paths_app.hs
  Setup.hs

在Paths_app.hs中,我有:

代码语言:javascript
复制
module Paths_app where
getDataFileName :: FilePath -> IO FilePath
getDataFileName = return

在Main.hs中,我有:

代码语言:javascript
复制
module Main where
import Paths_app
main = do
    file <- getDataFileName "data/data.txt"
    data <- readFile file
    putStrLn $ "Your data is: " ++ data

我的app.cabal文件的相关部分如下所示:

代码语言:javascript
复制
name: app
version: 1.0
build-type: Simple
data-files: data/data.txt

executable foo
  build-depends: base, haskell98
  main-is: Main.hs
  hs-source-dirs: src

这可以很好地构建(先使用cabal configure,然后使用cabal install),但是可执行文件报告说它找不到data.txt文件。我试着换掉这条线

代码语言:javascript
复制
file <- getDataFileName "data/data.txt"

使用

代码语言:javascript
复制
file <- getDataFileName "data.txt"

但同样的事情也会发生。有没有什么明显的地方我做错了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-24 23:16:26

问题是我是在Windows系统上构建的,当我使用getDataFileName返回的文件名将数据加载到我的程序中时,我没有转义反斜杠。

票数 1
EN

Stack Overflow用户

发布于 2012-04-27 21:01:08

我试过重现它,但它对我来说很好。

在您描述的设置中,我不得不放弃对haskell98的依赖,因为basehaskell98都提供Prelude。此外,文件Main无法编译,因为它使用关键字data作为变量名,因此我将该变量重命名为dat。但后来它运行得很好。

关于我的设置的一些信息:

代码语言:javascript
复制
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.4.1

$ cabal --version
cabal-install version 0.13.3
using version 1.14.0 of the Cabal library 

$ ls ~/.cabal/bin/
...  foo  ...   

$ ls ~/.cabal/share/app-1.0/data/
data.txt
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10349221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档