Включение файлов данных в сборку клики

У меня есть пакет со следующей структурой (хорошо, это сильно упрощено, но...)

app/
  src/
    Main.hs
  data/
    data.txt
  app.cabal
  Paths_app.hs
  Setup.hs

В Paths _app.hs у меня есть :

module Paths_app where
getDataFileName :: FilePath -> IO FilePath
getDataFileName = return

, а в Main.hs у меня есть:

module Main where
import Paths_app
main = do
    file <- getDataFileName "data/data.txt"
    data <- readFile file
    putStrLn $ "Your data is: " ++ data

соответствующие части моего файла app.cabal выглядят так:

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. Я пробовал заменить строку

file <- getDataFileName "data/data.txt"

на

file <- getDataFileName "data.txt"

, но происходит то же самое. Есть ли что-то очевидное, что я делаю неправильно?

8
задан Chris Taylor 27 April 2012 в 10:47
поделиться