dimanche 4 décembre 2016

Trouble with using modules with makefile (Ocaml)

I'm having a problem using my modules in my test file. I've created a simpler version here that still replicates the problem.

(* person.ml *)
module Person = struct
    type person = {name: string; age: int}

    let create_person name age = {name=name; age=age}

end


(*makefile *)
test:
    ocamlbuild -pkgs oUnit,yojson,str,ANSITerminal test.byte && ./test.byte

check:
    bash checkenv.sh

clean:
    ocamlbuild -clean


(* test.ml *)
open OUnit2
open Person

let person = create_person "john" 40


(* utop *)
#use "person.ml"
open Person
let person = create_person "john" 40

Output: val person : person = {name = "john"; age = 40}  


(* when I type in "make" in the terminal *)

ocamlbuild -pkg oUnit test.byte && ./test.byte
+ /Users/user/.opam/4.03.0/bin/ocamlc.opt -c -I /Users/user/.opam/4.03.0/lib/oUnit -I /Users/user/.opam/4.03.0/lib/ocaml -o test.cmo test.ml
File "test.ml", line 4, characters 13-26:
Error: Unbound value create_person
Command exited with code 2.
Hint: Recursive traversal of subdirectories was not enabled for this build,
  as the working directory does not look like an ocamlbuild project (no
  '_tags' or 'myocamlbuild.ml' file). If you have modules in subdirectories,
  you should add the option "-r" or create an empty '_tags' file.

  To enable recursive traversal for some subdirectories only, you can use the
  following '_tags' file:

      true: -traverse
      <dir1> or <dir2>: traverse

Compilation unsuccessful after building 4 targets (2 cached) in 00:00:00.
make: *** [test] Error 10

Aucun commentaire:

Enregistrer un commentaire