Compilation 使用第三方库进行编译
我正在使用解析commands.ml中的命令行参数。因此,commands.ml的第一行如下所示:Compilation 使用第三方库进行编译,compilation,ocaml,Compilation,Ocaml,我正在使用解析commands.ml中的命令行参数。因此,commands.ml的第一行如下所示: open Getopt 我似乎不知道如何使用这个模块编译commands.ml。我尝试了很多东西,但总是出现以下错误: File "commands.ml", line 1, characters 5-11: Error: Unbound module Getopt 我在.ocamlinit文件中添加了#require“Getopt” 您说您正在使用Getopt,“所以”您的代码中有打开Get
open Getopt
我似乎不知道如何使用这个模块编译commands.ml。我尝试了很多东西,但总是出现以下错误:
File "commands.ml", line 1, characters 5-11:
Error: Unbound module Getopt
我在.ocamlinit文件中添加了#require“Getopt” 您说您正在使用
Getopt
,“所以”您的代码中有打开Getopt
。但是那里没有直接的联系。在不打开模块的情况下使用模块更常见(我认为通常更好)
使用open
仅控制包含模块中可用的名称。它不会告诉编译器在哪里查找打开的模块
标准OCaml库中没有Getopt
模块。解析命令行的标准模块名为Arg
。如果您使用的是外部库,则需要使用-I
标志告知编译器在何处查找它
.ocamlinit
文件控制OCaml顶级(读取评估打印解释器)的行为。它不会影响编译器的行为
如果您使用的是构建工具,那么可能有更简单的方法来进行设置。但是您需要更仔细地解释您的构建环境。问题在于,您的问题有很多答案。根据您选择的构建系统,将有不同的命令。这就是我们为什么要问的原因。但看起来,你没有偏好,所以让我试着给你一些答案 使用
ocamlbuild
使用ocamlfind
欲了解更多解释,请阅读
个人建议:如果您不确定选择什么,请使用
ocamlbuild
将ocamlfind
与您首选的编译器一起使用(我在下面使用ocamlopt),如下所示:
ocamlfind ocamlopt -package getopt -linkpkg commands.ml -o commands
如果未安装getopt,此操作仍将失败。Getopt可与opam一起安装:
opam install getopt
我建议您改用
Arg
。它是OCaml标准库的一部分,通常使用起来很愉快。我实际上只是在寻找一个能够成功编译commands.ml的命令。我知道我需要告诉编译器在哪里查找getopt,但我不知道如何查找。我已经尝试过使用-I
标志bot执行命令,正如我所说,到目前为止,我尝试过的都没有成功。在-I
标志之后,我必须做什么?我已经使用OPAM安装了Getopt
。
ocamlfind ocamlopt -package getopt -linkpkg commands.ml -o commands
opam install getopt