2016-02-04 60 views
1

我已將eliom更新爲通過opam安裝的最新版本(5.0.0),並且失敗。我曾經嘗試都與4.02.1 & 4.02.3編譯器,但是,它無法編譯基本eliom:eliom 5.0.0:未能正常工作

eliomdep -client -ppx -package lwt.ppx -package js_of_ocaml.deriving.ppx -package js_of_ocaml.ppx mysite.eliom > _deps/mysite.eliom.client 
Fatal error: exception Fl_package_base.No_such_package("js_of_ocaml.deriving.ppx", "") 
make: *** [_deps/mysite.eliom.client] Erreur 2 

任何想法?

回答

1

你似乎錯過了ppx派生插件。這是一個可選的依賴項。

opam install ppx_deriving 

您是否在使用基礎模板?我不記得任何使用ppx派生的。

+0

我只是試圖安裝ppx_deriving:「js_of_ocaml.2.7與ppx_deriving.1.1衝突」。我正在使用基本模板:「eliom-distillery -name mysite -t​​emplate basic.ppx -target-directory mysite」;然後「cd mysite; make test.byte」即可。 –

+0

ppx_deriving.1.1是一個相當老的版本。你應該使用3.0。 'opam install ppx_deriving.3.0'。您也可以閱讀https://opam.ocaml.org/doc/Install.html#ExternalSolvers。 – Drup

+0

ocaml 4.02.3安裝正常 - 但生成test.byte時仍然出現錯誤。失敗的命令是:js_of_eliom -ppx -c -package lwt.ppx -package js_of_ocaml.deriving.ppx -package js_of_ocaml.ppx mysite.eliom;當我手動輸入沒有「.ppx」的命令時,它可以工作(「js_of_eliom -ppx -c -package lwt -package js_of_ocaml.deriving -package js_of_ocaml mysite.eliom」) –

1

看起來好像eliom-distillery生成的Makefile.options存在一個缺陷:CLIENT_PACKAGES最初等於一個< package> .ppx;一個有權刪除.ppx擴展得到它的工作原理:

初始Makefile.options

... 
# OCamlfind packages for the server 
SERVER_PACKAGES := lwt.ppx js_of_ocaml.deriving.ppx 
# OCamlfind packages for the client 
CLIENT_PACKAGES := lwt.ppx js_of_ocaml.deriving.ppx js_of_ocaml.ppx 
... 

糾正Makefile.options:

... 
# OCamlfind packages for the server 
SERVER_PACKAGES := lwt js_of_ocaml.deriving 
# OCamlfind packages for the client 
CLIENT_PACKAGES := lwt js_of_ocaml.deriving js_of_ocaml 
... 

這是由於PPX-deriving.3.0那未安裝。 (Thx to Drup)