2013-03-31 73 views
5

我使用一個簡單的文本文件來生成一些帶有TemplateHaskell和runIO的代碼。cabal:如何將文本文件添加爲構建依賴關係

...  
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) 
+2

如果您運送'spec.txt',則可以使用'extra-source-files'字段使'cabal'在tarball中包含文件。 –

+0

是的,我知道額外的源文件。它有助於sdist,但不適合建設。 – user1887615

回答

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

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

抱歉誤會。

我覺得cabal在這裏並不重要。 ghc在編譯時運行openFile

這意味着openFile仍在另一個「運行時」運行以生成代碼。

的「運行時」的結果就是無法找到文件

也許當前目錄是不是你想的。

嘗試使用setCurrentDirectory或顯示的curdir,並檢查它之前getCurrentDirectory

,如果它不能正常工作。請顯示整個代碼以進行測試

+0

數據文件用於*運行時*,我需要文件在*編譯時*中可用。 – user1887615

相關問題