我使用一个简单的文本文件来生成一些使用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)
答案 0 :(得分:2)
看看标志数据文件:
顺便说一句,我推荐EclipseFP用于你的工作。它提供了编辑cabal文件的便捷方式。 这就是我能找到那面旗帜的原因。 它真的减少了琐碎的工作。http://www.haskell.org/haskellwiki/Haskell_IDE#EclipseFP_plugin_for_Eclipse_IDE
=============================================== ==============================
抱歉误会。我认为cabal在这里并不重要。 ghc在编译时运行 openFile 。
这意味着openFile仍在另一个“运行时”运行以生成代码。
“运行时”结果只是找不到文件
也许目前的目录并不像你想象的那样。
尝试使用 setCurrentDirectory 或显示 curdir 并在 getCurrentDirectory
之前检查如果不起作用。请显示完整的测试代码