oasis
を使用して、いくつかの外部パッケージを使用してプロジェクトをビルドしました。今私はJane StreetのCoreパッケージを使いたいと思っています。しかし、Coreを使用してコンパイルするには、ocamlfind
にフラグ-thread
を渡す必要があります。このように:コアをコンパイルする_oasisに追加する方法
ocamlfind ocamlc -linkpkg -thread -package core foo.ml -o foo
どのように私は-thread
フラグを追加するoasis
を伝えることができますか?
Executable "foo"
BuildDepends: core,batteries,bar
Path: src
MainIs: foo.ml
CompiledObject: best
バー、同じプロジェクトから自分のユーティリティ集:今、私の_oasisファイルには、次のようなものが含まれています。私はoasis setup
とmake
を実行すると、私はこのエラーを取得する:
ocamlfind: Error from package `threads': Missing -thread or -vmthread switch
私はオアシスのマニュアルを見て、と_oasisファイルのすべてのセクションのためのcommon fields、またfields that are specific to the Excutable sectionどちらもコマンドラインを追加することに適しているように見えますocamlfind
のフラグ。
私はthis answerは、関連するかもしれないと思ったが、私はXOCamlbuildExtraArgs
の値として-thread
で、それは提案余分なキーを追加しようとしたとき、私はエラーを得た:
E: Field XOCamlbuildExtraArgs is not defined in schema Executable
ありがとうございます。それがトリックでした。 (_tagsは 'oasis setup'によって自動的に生成されますが、生成されると上書きされません)。 – Mars
他の誰もがそのコメントに書いたことは間違っていました。 _tagsは 'oasis setup'によって変更することができますが、最後に追加の行をそのまま残します。 – Mars
非常にシンプルな1行の "プロジェクト"で 'BuildDepends:\ n core'を使って上記を試しましたが、私は次のようになります:' Error:Files /usr/local/lib/ocaml/threads/threads.cmxaと/usr/local/lib/ocaml/threads/threads.cmxaはどちらもThread'という名前のモジュールを定義しています(はい、同じパスを2回... wtf?) – ELLIOTTCABLE