Cabal パッケージに外部ファイルを埋め込む
Cabal パッケージで実行時に必要な外部ファイル埋め込む方法について
Cabal パッケージの設定
pkgname.cabal で data-files
もしくは data-dir
を指定する。data-files
はワイルドカード指定できるので data-files: images/*.png
などまとめてファイル指定も可能。
実装方法
data-files
のフルパスを取得する関数が用意されている
getDataFileName :: FilePath -> IO FilePath
利用するときは import Paths_pkgname
する必要がある
import Paths_pkgname
import qualified Data.ByteString.Lazy.Char8 as BS
getContent = do
fp <- getDataFileName "data/hoge.txt"
content <- BS.readFile fp
return content