0

我有一个带有以下行的 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.

我究竟做错了什么?

4

2 回答 2

1

OPAM 使用%{prefix}%,而不是${prefix}$.

您可以在文档的创建 OPAM 包部分中看到前缀的使用。

于 2014-12-30T17:03:42.590 回答
0

此错误消息似乎由 make 打印:

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

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

于 2014-12-30T10:26:26.750 回答