5

ハスケルの世界では、autotoolsの代替手段は何ですか?私は、同じソースコードの異なる構成の中から選択できるようにしたい。1つのHaskellプログラムの複数の設定を管理するにはどうしたらいいですか?

たとえば、ハスケルにMD5の実装が少なくとも2つあります。Data.Digest.OpenSSL.MD5およびData.Digest.Pure.MD5です。どのライブラリが既にインストールされているか把握できるようにコードを書いて、もう一方のライブラリをインストールする必要はありません。

Cでは、Autotools/Scons/CMake + cppを使用できます。 Pythonで私はImportErrorをキャッチすることができます。どのツールをHaskellで使うべきですか?

+0

ありがとう、ノルマン、これはより良いタイトルです – sastanin

答えて

14

ハスケルでは、カバル構成を使用します。プロジェクトの最上位ディレクトリに、.cabalという拡張子(たとえば、<yourprojectname>.cabal)のファイルを配置します。内容は概ね次のとおり

Name:    myfancypackage 
Version:    0.0 
Description:   myfancypackage 
License:    BSD3 
License-file:  LICENSE 
Author:    John Doe 
Maintainer:   [email protected] 
Build-Type:   Simple 
Cabal-Version:  >=1.4 

Flag pure-haskell-md5 
    Description: Choose the purely Haskell MD5 implementation 
    Default: False 

Executable haq 
    Main-is:   Haq.hs 
    Build-Depends:  base-4.* 
    if flag(pure-haskell-md5) 
    Build-Depends: pureMD5-0.2.* 
    else 
    Build-Depends: hopenssl-1.1.* 

Cabal documentationは詳細、Configurations上の特定のセクションを有しています。

+0

ありがとうございました!これは私が探していた答えです。 cpp。右? – sastanin

+1

右は 'CPP-options'、' CC'はCコンパイラです。また、Cabalを使ってプロジェクトをビルドする必要があります。私のプロジェクトのMakefileと.cabalファイルを見てください: [Scion](http://github.com/nominolo/scion/tree/master)。関連ファイルに{ - #LANGUAGE CPP# - }を追加する必要があります。 – nominolo

+0

ありがとうございます。 – sastanin

2

nominoloによると、Cabalは使用するツールです。特に、「設定」構文

関連する問題