因此,我编写了一个简洁的小程序,它可以分析日语文本并为用户提供有关 Kanji 的各种统计信息。在其中使用,我想向全世界发布这个程序。问题是,我不知道如何创建“发布”。
我意识到 *nix 系统经常将可执行文件(或符号链接(symbolic link))放在/usr/bin 之类的地方,并且构建脚本通常会自动将它们放在那里,但事实证明我去用 Haskell 编写了这个东西。
Then just use cabal!
...我听到你说。好吧,我会,除了我的程序有大量的数据文件可以读取,当然程序需要知道这些文件在哪里。通过使用 cabal,可执行文件不会被扔到一些奇怪的项目文件路径中吗:
/usr/share/haskell/cabal/morecabal-1.0.4/myproject-1.3.4.1.a/thisisridiculous/
目前我从它的源目录运行可执行文件,它正在“./data”中寻找数据文件。
是否有安装路径的典型格式,以便我可以提前告诉我的程序在源中查找数据的位置?
我的最终目标是把它变成一个 Arch Linux 包。谁能帮我开始?
对于好奇的人,git repo is here .提前感谢您提供的任何帮助。
最佳答案
在 Cabal 项目中引用数据文件的可移植方式是在 data-files
中命名它们。您的 .cabal
中的属性(property)文件。
Cabal 将生成一个名为 Paths_packagename
的模块它定义了一个函数
getDataFileName :: FilePath -> IO FilePath
您的代码可以使用它来确定数据文件的安装位置。
见:Accessing data files from package code
关于unix - 如何发布 *nix 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10279508/