2017-01-24 6 views
1

私のOCamlプログラムは、バージョン4.01.0で導入されたOCaml標準ライブラリのいくつかの関数を使用しています。私のユーザが自分のコードをコンパイルしたときに、OCamlコンパイラのバージョンが4.01.0以上でないと、コンパイラはエラーを出します。私は、このエラーは単なる一般的な "バインドされていない変数"エラーよりも役立つと感じています。メイクファイルで特定のOCamlバージョンを要求する

私はocaml -vnumが "4.01.0"を出しているので、私は自分のMakefileでそれをチェックしようと思うかもしれませんが、おそらくこれを行う適切な方法がありますか? OCamlBuildを使用しています。

私の現在のMakefileは方法によって、次のようになります。

all: 
    @ echo "Attention: requires OCaml version >= 4.01.0." 
    ocamlbuild -cflag -annot -lib str -lib unix name_of_my_project.native 
    mv name_of_my_project.native name_of_my_project 

clean: 
    ocamlbuild -clean 
    rm -f name_of_my_project 

答えて

1

つ以上の適切な方法が常にあります:)私の適切な方法は、oasisを使用することです。他の人はおそらくAutotool AC_PROG_OCAMLを指定されたバージョンで使用します。他にも独自のメソッドを持つビルドシステムがあります。あなたのパッケージをopam(it is also very easy)にリリースするときには、制約をopamファイルに追加するので、パッケージマネージャはパッケージマネージャをビルドしようとしません。

私の個人的なアドバイスを要約すると、オアシスを使用することです。それは非常にシンプルですが、まだ多用途です。あなたのケースでは、このようなものになります_oasis制御ファイルには、必要があります。ファイルが作成されたら

OASISFormat: 0.4 
Name:  name 
Version:  0.0.1 
OCamlVersion: >= 4.01.0 
Synopsis: Cool package 
Authors:  Myself 
Maintainers: Myself 
License:  MIT 
Copyrights: (C) Myself 
Plugins:  META (0.4), DevFiles (0.4) 
BuildTools: ocamlbuild 


Executable "project" 
    Path:   src 
    MainIs:   project.ml 
    CompiledObject: best 
    BuildDepends: str, unix 

を、あなたは

oasis setup 

でconfigureスクリプトを作成することができますし、それは準備ができているの後に(それはまた、作成されますあなたは既にMakefileを持っている場合は、チェックを挿入することは、おそらく最もプラグマが存在することになる

./configure 
    make 
    make install 
1

setup.mlファイル)には、共通を使用することができますこれを達成するためには、ティックな方法。 Makefile式またはシェルを使用して実行できます。以下は同様のチェックのシェル版です:https://github.com/alavrik/piqi/blob/master/configure#L144

私はOCamlの条件付きコンパイルを探していて、optcompを使ってしまいました。ここにはexampleがあります。

関連する問題