cabal:如何将文本文件添加为构建依赖项

use*_*615 5 haskell cabal

我使用一个简单的文本文件来生成一些使用TemplateHaskell和runIO的代码.

...    
curdir <- runIO $ getCurrentDirectory
addDependentFile $ curdir ++ "/spec.txt"
bs <- runIO $ BS.readFile "spec.txt"
...
Run Code Online (Sandbox Code Playgroud)

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

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

小智 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或 show curdir并在getCurrentDirectory之前检查它

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