所以,我写了一个简洁的小程序,可以分析日文文本,并向用户提供有关Kanji使用的各种统计数据,我想向全世界发布这个程序。问题是,我不知道如何创建“发布”。
我意识到* nix系统经常将可执行文件(或符号链接)放在像/ usr / bin这样的地方,并且构建脚本经常自动将它们放在那里,但事实证明我去了Haskell写了这个东西。
然后只使用阴谋!
......我听到你说。好吧,我会,除了我的程序有大量的数据文件,它读出来,当然程序需要知道这些文件的位置。通过使用cabal,可执行文件不会被抛到一些奇怪的项目文件路径la:
/usr/share/haskell/cabal/morecabal-1.0.4/myproject-1.3.4.1.a/thisisridiculous /
目前我从源目录运行可执行文件,它正在“./data”中查找数据文件。 是否有典型的安装路径格式,所以我可以提前告诉我的程序在源查找数据的位置?
我最终的目标是使其成为Arch Linux软件包。任何人都可以帮助我开始吗?
好奇的是git repo is here。提前感谢您提供任何帮助。
答案 0 :(得分:12)
在Cabal项目中引用数据文件的便携方式是在data-files
文件的.cabal
属性中命名它们。
Cabal将生成一个名为Paths_packagename
的模块,用于定义函数
getDataFileName :: FilePath -> IO FilePath
您的代码可用于确定数据文件的安装位置。
答案 1 :(得分:8)
了解现有的Haskell项目(例如Gitit)是如何打包的for Arch linux。特别是PKGBUILD。
您也可以下载The gitit tarball并查看如何在data-files:
文件中使用gitit.cabal
指令。
我不读Haskell,但根据我对来源的理解,文件Paths_gigit.hs
(可以找到here。)是由cabal生成的,所以你只需要担心相对路径。然后只需要导入它并使用getDataFileName
函数。