在opam文件中指定前缀

时间:2014-12-30 04:52:33

标签: ocaml opam

我有一行opam文件:

install: [make "install" "prefix=${prefix}$"]

我的意图是opam install将执行类似以下内容(我已经测试过):

make install prefix=/home/laheadle/.opam/4.02.0

在Makefile中我有:

install: js
    cp ./tournabox.css ./tournabox.js $(prefix)/lib

但我收到错误:

#=== ERROR while installing tournabox.1.0 =====================================#
# opam-version 1.2.0
# os           linux
# command      make install prefix=${prefix}$
# path         /home/laheadle/.opam/4.02.0/build/tournabox.1.0
# compiler     4.02.0
# exit-code    2
# env-file     /home/laheadle/.opam/4.02.0/build/tournabox.1.0/tournabox-7593-d2c37b.env
# stdout-file  /home/laheadle/.opam/4.02.0/build/tournabox.1.0/tournabox-7593-d2c37b.out
# stderr-file  /home/laheadle/.opam/4.02.0/build/tournabox.1.0/tournabox-7593-d2c37b.err
### stdout ###
# ocamlbuild -cflag -annot -use-ocamlfind -pkgs js_of_ocaml.log,js_of_ocaml,js_of_ocaml.syntax -syntax camlp4o tournabox.byte
# js_of_ocaml +weak.js tournabox.byte
# lessc tournabox.less tournabox.css
# ocamlbuild -cflag -annot -use-ocamlfind -pkgs js_of_ocaml.log,js_of_ocaml,js_of_ocaml.syntax -syntax camlp4o tournabox.byte
### stderr ###
# make: *** Recursive variable `prefix' references itself (eventually).  Stop.

我做错了什么?

2 个答案:

答案 0 :(得分:1)

OPAM使用%{prefix}%,而非${prefix}$

您可以在文档的Creating OPAM Packages部分中看到使用前缀。

答案 1 :(得分:0)

此错误信息似乎由make:

打印
  

'递归变量`xxx'引用自己(最终)。停止。'   这意味着你已经定义了一个正常(递归)make变量xxx,当它被展开时,将引用它自己(xxx)。这是不允许的;要么使用简单扩展变量(':='或':: ='),要么使用追加运算符('+ =')。请参见如何使用变量。

https://www.gnu.org/software/make/manual/html_node/Error-Messages.html