

OCaml 4.02.3, Reason 0.0.5, OS X 10.11.5 です。

Reasonのコードは以下です。

[code]

    open Core.Std;
    printf "test %f" (Float.of_int 3);
    
[/code]

コンパイルします。

[code]

    $ rebuild -pkgs core a.native
    
[/code]

エラーになってバイナリが生成されません。  
何かオプションフラグを追加指定してやれば、a.nativeの生成まで出来るのではないかと思いますが、  
わかる方がいたら教えていただきたいです。

> Error: No implementations provided for the following modules:  
>  Thread referenced from > > /Users/ow/.opam/4.02.3/lib/core/core.cmxa(Core)  
>  Mutex referenced from /Users/ow/.opam/4.02.3/lib/core/core.cmxa(Core)  
>  Condition referenced from /Users/ow/.opam/4.02.3/lib/core/core.cmxa(Core)  
>  Event referenced from /Users/ow/.opam/4.02.3/lib/core/core.cmxa(Core)  
>  Command exited with code 2.  
>  Hint: Recursive traversal of subdirectories was not enabled for this build,  
>  as the working directory does not look like an ocamlbuild project (no  
>  '_tags' or 'myocamlbuild.ml' file). If you have modules in subdirectories,  
>  you should add the option "-r" or create an empty '_tags' file.
>
> To enable recursive traversal for some subdirectories only, you can use the  
>  following '_tags' file:
[code]

>      true: -traverse
>       <dir1> or <dir2>: traverse
>  
[/code]

>
> Compilation unsuccessful after building 4 targets (3 cached) in 00:00:00.

一方、同じプログラムをOCamlで書き直すと多分こんな風だと思います。

[code]

    open Core.Std;;
    let () = printf "test %f" (Float.of_int 3);;
    
[/code]

コンパイルします。

[code]

    $ corebuild -verbose 1 a.native
    
[/code]

ビルドは成功し実行可能なa.nativeができました。

そこで、a.cmxを作るところまでは、rebuildコマンドでも出来ているみたいなので、

[code]

    $ rebuild -pkgs core a.native
    
[/code]

が失敗した後に、corebuildコマンドを真似て以下のコマンドを手入力するとa.nativeを作成できました。

[code]

    $ ocamlfind ocamlopt -linkpkg -g -thread -package core _build/a.cmx -o  a.native
    
[/code]

ですから、以下のコマンドに何かフラグを追加してやればうまくいくのではないか、と思ったのですが何かアイデアありますでしょうか。

[code]

    $ rebuild -pkgs core a.native
    
[/code]


CC BY-SA 3.0
2016-05-21T08:13:27.423
25062
2018-09-05T11:01:56.270
2018-09-05T11:01:56.270
19110
12780
question
facebook ocaml reason
Facebook ReasonでCoreライブラリをリンクしたい


Reasonのgithubに質問と回答がありました。

<https://github.com/facebook/reason/issues/556>

それを参考に、以下のようにしてコマンド一発でエラーなくネイティブバイナリを作成できました。

[code]

    $ ocamlfind ocamlc -g -thread -package core -pp refmt -linkpkg -o a.native -impl a.re
    
[/code]


CC BY-SA 3.0
2016-05-31T12:48:18.050
25342
2016-05-31T12:48:18.050
12780
25062
answer