首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用第三方图书馆编译

使用第三方图书馆编译
EN

Stack Overflow用户
提问于 2015-06-19 16:45:03
回答 3查看 86关注 0票数 2

我使用盖托普解析commands.ml中的命令行参数。因此,commands.ml的第一行如下所示:

代码语言:javascript
运行
复制
open Getopt

我似乎不知道如何用这个模块编译commands.ml。我尝试了很多事情,我总是遇到以下错误:

代码语言:javascript
运行
复制
File "commands.ml", line 1, characters 5-11:
Error: Unbound module Getopt

我在我的.ocamlinit文件中添加了#require "Getopt“。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-19 17:46:36

您说您使用的是Getopt,“所以”您的代码中有open Getopt。但那里没有直接联系。在我看来,在不打开模块的情况下使用模块更常见(在我看来通常更好)。

open的使用仅控制包含模块中可用的名称。它没有告诉编译器在哪里查找打开的模块。

标准的Getopt库中没有OCaml模块。解析命令行的标准模块名为Arg。如果使用外部库,则需要使用-I标志来告诉编译器在哪里查找它。

.ocamlinit文件控制OCaml toplevel (读-古-打印解释器)的行为。它不影响编译器的行为。

如果您使用的是构建工具,那么可能有更容易设置的方法。但是,您需要更仔细地解释您的构建环境。

票数 3
EN

Stack Overflow用户

发布于 2015-06-21 14:42:37

问题是,你的问题有很多答案。根据您选择的构建系统,将有不同的命令。这就是我们为什么要问的原因。但是看起来,你没有偏好,所以让我试着给你一些答案。

ocamlbuild

代码语言:javascript
运行
复制
$ ocamlbuild -package getopt commands.native

ocamlfind

代码语言:javascript
运行
复制
$ ocamlfind ocamlopt -package getopt commands.ml -o commands.native

要获得更多的解释,请阅读下面是

个人建议:如果你不确定该选择什么,那么就使用ocamlbuild

票数 1
EN

Stack Overflow用户

发布于 2015-06-22 21:32:41

在您的首选编译器中使用ocamlfind (我在下面使用ocamlopt ),如下所示:

代码语言:javascript
运行
复制
ocamlfind ocamlopt -package getopt -linkpkg commands.ml -o commands

如果没有安装getopt,这仍然会失败。Getopt可安装opam:

代码语言:javascript
运行
复制
opam install getopt

我建议您改用Arg。它是OCaml标准库的一部分,通常使用起来很愉快。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30943224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档