告诉ocamlbuild使用Core

5
在我的项目中,有一个文件使用了Core.Std内容,所以我运行了以下命令:
opam install core

并添加了

open Core.Std

在我的文件中。

当我运行时

ocamlbuild myprogram.native

它说:

Error: Unbound module Core

指向上面开放语句所在的行。

因此,我尝试这样做:

ocamlbuild -use-ocamlfind -pkgs core.std myprogram.native

并收到以下信息:
ocamlfind: Package `core.std' not found

所以我认为可能需要运行opam install core.std,但是根据opam的说法并没有这样的东西。 我也尝试在ocaml repl中输入“open Core.Std;;”,但也没有起作用。 有任何想法吗?


你应该将帮助你的答案标记为正确答案,以表彰回答者的努力。 - Jackson Tale
2个回答

10

你可以使用通常随此库一起提供的corebuild,或者尝试以下方法:

 ocamlbuild -use-ocamlfind -pkg core

提示:使用 ocamlfind list 命令查看可用软件包列表。

补充说明:除了 corebuild,他们通常还会提供 coretop,这是一个脚本,可以让你运行启用 core 的 top-level。它在底层使用 utop,所以在进行实验之前,请确保已经使用 opam install utop 安装了它(如果你使用的是 opam)。


你如何从myocamlbuild.ml中提供这个标志? - user1804599
“this” 是哪一个?-use-ocamlfind 还是 -pkg core - ivg
后者:-pkg core - user1804599
通常将此添加到 _tags 文件中,而 myocamlbuild.ml 用于根据 _tags 确定正确的标志集。根据您的 myocamlbuld.ml,您需要添加 <**/*> : pkg_core<**/*>: package(core)。编写自己的 myocamlbuild 插件是一种高级魔法,通常不需要。即使手动填充 _tags 文件也相当不寻常。因此,也许您正在朝错误的方向努力。 - ivg
哦,我明白了。谢谢 :) - user1804599

5

从您的ocamlbuild cmd中删除.std


2
谢谢!我现在得到了不同的错误信息:“ocamlfind:来自软件包`threads'的错误:缺少-switch 或-vmthread开关,命令退出代码为2。”并且 -thread 或 -vmthread 不是 ocamlbuild 可接受的开关。 - Calle
3
vmthread和thread是标签。你还想要使用“-tag[s] thread”。 - nlucaroni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接