6

我使用一个简单的文本文件通过 TemplateHaskell 和 runIO 生成一些代码。

...    
curdir <- runIO $ getCurrentDirectory
addDependentFile $ curdir ++ "/spec.txt"
bs <- runIO $ BS.readFile "spec.txt"
...

与 ghci 一起使用时,一切都很好。问题是 cabal 不知道我需要该文件来构建,当我这样做时我得到了这个cabal build

Exception when trying to run compile-time code:
  spec.txt: openFile: does not exist (No such file or directory)
4

1 回答 1

2

看看标志数据文件:

http://www.haskell.org/cabal/users-guide/developing-packages.html#accessing-data-files-from-package-code

顺便说一句,我推荐 EclipseFP 用于您的工作。它提供了一种方便的方式来编辑 cabal 文件。这就是为什么我能找到那面旗帜。它确实减少了琐碎的工作。

http://www.haskell.org/haskellwiki/Haskell_IDE#EclipseFP_plugin_for_Eclipse_IDE

==================================================== ============================

抱歉,误解了。

我认为阴谋集团在这里并不重要。ghc在编译时运行openFile 。

这意味着 openFile 仍然在另一个“运行时”运行以生成代码。

“运行时”结果就是找不到文件

也许当前目录不是你想的那样。

尝试使用setCurrentDirectory或显示curdir并在getCurrentDirectory之前检查它

如果它不起作用。请显示整个代码进行测试

于 2013-03-31T17:13:04.230 回答