2017-06-19 3 views
0

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 setupmakeを実行すると、私はこのエラーを取得する:

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 

答えて

2

あなたは次の行を追加する必要がありますあなたの_tagsファイルに:

<**/*>: thread 

OASIS_STARTOASIS_STOP区切り文字の間に原料の束があるでしょう、それらの間ではなく、前または後に何かを追加しないでください。

+0

ありがとうございます。それがトリックでした。 (_tagsは 'oasis setup'によって自動的に生成されますが、生成されると上書きされません)。 – Mars

+0

他の誰もがそのコメントに書いたことは間違っていました。 _tagsは 'oasis setup'によって変更することができますが、最後に追加の行をそのまま残します。 – Mars

+0

非常にシンプルな1行の "プロジェクト"で 'BuildDepends:\ n core'を使って上記を試しましたが、私は次のようになります:' Error:Files /usr/local/lib/ocaml/threads/threads.cmxaと/usr/local/lib/ocaml/threads/threads.cmxaはどちらもThread'という名前のモジュールを定義しています(はい、同じパスを2回... wtf?) – ELLIOTTCABLE

関連する問題