12

そこで、日本語のテキストを分析し、漢字の使用法に関するさまざまな統計をユーザーに提供できる、きちんとした小さなプログラムを作成しました。このプログラムを世界に公開したいと思います。問題は、「リリース」を作成する方法がわからないことです。

*nix システムでは、実行可能ファイル (またはシンボリック リンク) が /usr/bin などの場所に置かれることが多く、ビルド スクリプトによって自動的にそこに置かれることがよくあります。

次に、カバールを使用してください!

…と言うのが聞こえます。ただし、私のプログラムには、読み取るデータ ファイルが大量にあり、もちろん、プログラムはそれらのファイルがどこにあるかを知る必要があります。cabal を使用することで、実行可能ファイルが奇妙なプロジェクト ファイルパスにスローされなくなります。

/usr/share/haskell/cabal/morecabal-1.0.4/myproject-1.3.4.1.a/thisisridiculous/

現在、ソース ディレクトリから実行可能ファイルを実行すると、「./data」でデータ ファイルを探します。インストール パスの一般的な形式はありますか?それにより、データを探す場所をソース内で事前にプログラムに伝えることができますか?

私の最終的な目標は、これを Arch Linux パッケージにすることです。誰でも始めるのを手伝ってもらえますか?

好奇心旺盛な方のために、git リポジトリは hereです。ご協力いただきありがとうございます。

4

2 に答える 2

12

Cabal プロジェクトでデータ ファイルを参照するポータブルな方法はdata-files、ファイルのプロパティで名前を付けること.cabalです。

CabalPaths_packagenameは、関数を定義するというモジュールを生成します

getDataFileName :: FilePath -> IO FilePath

これをコードで使用して、データ ファイルがインストールされた場所を特定できます。

参照:パッケージ コードからのデータ ファイルへのアクセス

于 2012-04-23T11:30:59.637 に答える
8

Gititなどの既存の Haskell プロジェクトが Arch linux 用にどのようにパッケージ化されているかを見てみましょう。特に、PKGBUILD.

The gitit tarballをダウンロードdata-files:して、ファイル内のディレクティブの使用方法を確認することもできgitit.cabalます。

私はHaskellを読んでいませんが、ソースについて理解していることから、ファイル(ここPaths_gigit.hsで見つけることができます.)はcabalによって生成されるため、相対パスについてのみ心配する必要があります. 次に、それをインポートして関数を使用するだけです。getDataFileName

Arch のパッケージ:

カバルのパッケージング:

両方のパッケージ:

于 2012-04-23T11:35:34.413 に答える