我已经为ocaml下载了xml-light
并尝试编译它,但它从未成功过,问题如下。
当我输入ocamlopt dtd.ml
时,会出现错误Unbound module Xml
。
然后我输入ocamlopt xml.ml
,会出现错误Unbound value XmlParser.make
。
然后我输入ocamlopt xmlParser.ml
,会出现错误Unbound module Dtd
。
实际上有一种方法可以将它们一起编译吗?因此我感到很愚蠢。
答案 0 :(得分:2)
这不是那么微不足道,没什么可惊讶的。这是make
的输出(来自mingw / cygwin ocaml发行版):
ocamlyacc xml_parser.mly
ocamlc xml.mli
ocamlc dtd.mli
ocamlc xml_parser.mli
ocamlc -c xml_parser.ml
ocamllex xml_lexer.mll
ocamlc xml_lexer.mli
ocamlc -c xml_lexer.ml
ocamlc -c dtd.ml
ocamlc xmlParser.mli
ocamlc -c xmlParser.ml
ocamlc -c xml.ml
ocamlc -o xml-light.cma -a xml_parser.cmo xml_lexer.cmo dtd.cmo xmlParser.cmo xml.cmo
测试:
ocamlc xml-light.cma test.ml -o test.exe
make install
输出:
ocamlopt -c xml_parser.ml
ocamlopt -c xml_lexer.ml
ocamlopt -c dtd.ml
ocamlopt -c xmlParser.ml
ocamlopt -c xml.ml
ocamlopt -o xml-light.cmxa -a xml_parser.cmx xml_lexer.cmx dtd.cmx xmlParser.cmx xml.cmx
cp xml-light.cmxa xml-light.a xml-light.cma xml.mli xmlParser.mli dtd.mli xml.cmi xmlParser.cmi dtd.cmi xml.cmx dtd.cmx xmlParser.cmx `ocamlc -where`
注意最后一行(我用换行符分隔它):你可能没有cp命令;只需手动创建%OCAMLLIB%\xml-light
目录并在那里复制列出的文件。然后你可以像这样建立你的项目:
ocamlopt -I +xml-light xml-light.cmxa foo.ml -o foo.exe