2016-12-04 2 views
1

Я пытаюсь открыть Yojson.Basic.Util в одном из моих файлов и продолжать получать ошибку u nbound module. Я пытался несколько различных вещей и не могу показаться, чтобы выяснить, что случилосьUnbound module Yojson.Basic.Util

У меня есть это в моем .ocamlinit:

#require "yojson";; 
#require "ANSITerminal";; 

и это в моем makefile:

test: 
    ocamlbuild -pkg yojson, oUnit test.byte && ./test.byte 

play: 
    ocamlbuild -pkgs oUnit,yojson,str,ANSITerminal main.byte && ./main.byte 

check: 
    bash checkenv.sh 

clean: 
    ocamlbuild -clean 

Typing make производит эту ошибку:

ocamlbuild -pkg yojson, oUnit test.byte && ./test.byte 
ocamlfind: Package `yojson,' not found 
Cannot run Ocamlfind. 
make: *** [test] Error 2 

Chan Перенять makefile к:

test: 
    ocamlbuild -use-ocamlfind -pkg yojson, oUnit test.byte && ./test.byte 

play: 
    ocamlbuild -pkgs oUnit,yojson,str,ANSITerminal main.byte && ./main.byte 

check: 
    bash checkenv.sh 

clean: 
    ocamlbuild -clean 

I типа в make, и это дает мне эту ошибку:

ocamlbuild -use-ocamlfind -pkg yojson, oUnit test.byte && ./test.byte 
Solver failed: 
    Ocamlbuild knows of no rules that apply to a target named oUnit. This can happen if you ask Ocamlbuild to build a target with the wrong extension (e.g. .opt instead of .native) or if the source files live in directories that have not been specified as include directories. 
Compilation unsuccessful after building 0 targets (0 cached) in 00:00:00. 
make: *** [test] Error 6 

ответ

2

Существует разница между опцией -pkg и -pkgs для ocamlbuild. Опция -pkg принимает ровно одно имя пакета. Опция -pkgs принимает список имен пакетов, разделенных запятыми (могут быть необязательные пробелы до и после запятых, но тогда вы должны процитировать аргумент).

В вашем примере вы используете -pkg, но с разделенным запятыми аргументом, и этот список имеет пробел, поэтому его нужно будет процитировать. Использование -pkgs yojson,oUnit должно устранить проблему.