Как использовать jbuild и ppx_driver с ppx_deriving
Я пытаюсь использовать jbuilder вместе с ppx_deriving (ppx_deriving_yojson
в частности) но застрял уже более часа. Мой нынешний подход jbuild
файл, содержащий следующее:
(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
Запуск сгенерированного ppx_driver
в _build/.ppx/default/ppx_deriving_yojson+ppx_driver.runner/ppx.exe
вручную с -print-transformations
выдает пустой вывод, поэтому я явно что-то упускаю.
Код прекрасно работает с topkg
просто включив ppx_deriving
а также ppx_deriving_yojson
как зависимости.
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)))))