簡體   English   中英

OCaml /沙丘構建中的未綁定模塊

[英]unbound module in OCaml / dune build

我第一次嘗試OCaml,並嘗試一起構建幾個文件。

當我跑步時:

dune build bin/main.exe

我正進入(狀態:

    ocamlc bin/.main.eobjs/main.{cmi,cmo,cmt} (exit 2)
(cd _build/default && /usr/bin/ocamlc.opt -w @a-4-29-40-41-42-44-45-48-58-59-60-40 -strict-sequence -strict-formats -short-paths -keep-locs -g -bin-annot -I bin/.main.eobjs -I lib/.lib.objs -no-alias-deps -opaque -o bin/.main.eobjs/main.cmo -c -impl bin/main.ml)
File "bin/main.ml", line 10, characters 17-25:
Error: Unbound module Rule

這是我的bin / main.ml文件:

open Lib

let () =
    let result = Math.add 2 3 in
    print_endline (string_of_int result);
    let result = Math.sub 3 1 in
    print_endline (string_of_int result);
    let result = Zoom.barf 3 1 in
    print_endline (string_of_int result);
    let result = Rule.add 3 1 in
    print_endline (string_of_int result);

在lib / inner / rule.ml中,包含:

let add x y = x + y
let sub x y = x - y

所以我想我需要以某種方式導入rule.ml文件中的bin/main.ml文件?

在Dune中,當前默認設置是不同目錄中的模塊彼此不可見。 這由(include_subdirs no)節( https://dune.readthedocs.io/en/latest/dune-files.html#include-subdirs )控制。 使用此設置,要使模塊彼此可見,需要在每個子目錄中放置一個dune文件,其中包含正確的內容。 如果您查看Dune項目本身的工作方式( https://github.com/ocaml/dune ),您的目錄結構將如下所示:

myproj/
  bin/
    dune
    main.ml
  lib/
    dune
    inner/
      dune
      rule.ml

各種dune文件應包含正確的(library ...)https://dune.readthedocs.io/en/latest/dune-files.html#library )或(executable ...)https:// dune .readthedocs.io / en / latest / dune-files.html#executable )節。

編輯:完成上述操作后,您還需要通過其完整的“路徑”(即Lib.Inner.Rule引用Rule模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM