2017-05-03 3 views
2

jbuilderppx_deriving(特にppx_deriving_yojson)を一緒に使ってみようとしていますが、今は1時間以上頑張っています。私の現在のアプローチは、以下を含む、jbuildファイルです。-print-transformationsppx_derivingでjbuildとppx_driverを使う方法

(jbuild_version 1) 
(executables 
((names (my-binary)) 
(libraries 
(ppx_deriving 
    ppx_deriving_yojson 
    cohttp 
    yojson)) 
(preprocess (pps (ppx_deriving_yojson ppx_driver.runner))))) 

しかし

Command [5] exited with code 1: 
$ (cd _build/default && ../.ppx/default/ppx_deriving_yojson+ppx_driver.runner/ppx.exe --dump-ast -o src/my_file.pp.ml --impl src/my_file.ml) 
File "src/my_file.ml", line 16, characters 5-13: 
Error: Attribute `deriving' was not used 

の結果は、手動で_build/.ppx/default/ppx_deriving_yojson+ppx_driver.runner/ppx.exeで生成されたppx_driverを実行することを空の出力を与えるので、私は明らかに何かが欠けています。

コードは、topkgで、ppx_derivingppx_deriving_yojsonを依存関係として含むだけで問題なく作成できます。

+0

あなたはppx_deriving + ppx_deriving_yojsonのどのバージョンを使用していますか? jbuilderはocaml-migrate-parsetreeに基づくppxsでのみ動作し、ocaml-migrate-parsetreeに基づくppx_derivingのopamへのリリースはまだありません。 – hcarty

答えて

1

最近のバージョンのppx_deriving_yojsonでは、これが可能です。

コード:

type t = {x: int; y: int} [@@deriving to_yojson] 

let() = print_endline (Yojson.Safe.to_string (to_yojson {x= 1; y= 2})) 

およびサンプルjbuildファイル:

(jbuild_version 1) 

(executables 
((names (main)) 
    (preprocess (pps (ppx_deriving_yojson))) 
    (libraries (ppx_deriving_yojson.runtime)))) 

(install 
((section bin) 
    (files ((main.exe as main))))) 
関連する問題