我有一行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.
我做错了什么?
答案 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