2013-03-31 34 views
5

Tôi sử dụng tệp văn bản đơn giản để tạo một số mã với TemplateHaskell và runIO.cabal: cách thêm tệp văn bản dưới dạng phụ thuộc xây dựng

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

Mọi thứ hoạt động tốt khi được sử dụng với ghci. Vấn đề là cabal không có ý tưởng tôi cần tập tin đó để xây dựng, và tôi nhận được điều này khi tôi làm cabal build.

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

Nếu bạn gửi 'spec.txt', bạn có thể sử dụng trường' extra-source-files' để làm cho 'cabal' bao gồm tệp trong tarball. –

+0

Có, tôi biết các tệp nguồn phụ. Nó giúp cho sdist, nhưng không cho xây dựng. – user1887615

Trả lời

2

hãy nhìn vào lá cờ dữ liệu tập tin:

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

bằng cách này, tôi khuyên bạn nên EclipseFP cho công việc của bạn. Nó cung cấp một cách thuận tiện để chỉnh sửa tập tin cabal. đó là lý do tại sao tôi có thể tìm thấy lá cờ đó. Nó thực sự làm giảm công việc tầm thường.

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

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

xin lỗi vì sự hiểu lầm.

Tôi nghĩ cabal không thực sự quan trọng ở đây. ghc chạy openFile lúc biên dịch.

điều đó có nghĩa là openFile vẫn được chạy tại một "thời gian chạy" khác để tạo mã.

kết quả "thời gian chạy" không thể tìm thấy tệp

có thể thư mục hiện tại không giống như bạn nghĩ.

cố gắng sử dụng setCurrentDirectory hoặc hiển thị curdir và kiểm tra xem nó trước khi getCurrentDirectory

nếu nó không hoạt động. vui lòng hiển thị toàn bộ mã để thử nghiệm

+0

tệp dữ liệu dành cho * thời gian chạy *, tôi cần tệp để có sẵn trong * thời gian biên dịch *. – user1887615

Các vấn đề liên quan