Module in Unterordnern richtig kompilieren (ocamlbuild)
Ich habe vor kurzem beschlossen, die Dateien in meinem Projektverzeichnis zu organisieren. Ich habe die Parser, die ich für ein paar verschiedene Dateitypen hatte, in ein eigenes Verzeichnis verschoben und mich auch für ocamlbuild entschieden (da das Projekt immer komplizierter wurde und das einfache Shell-Skript nicht mehr ausreichte).
Ich konnte externe Projekte erfolgreich einbinden, indem ich myocamlbuild mit einigen Grundregeln modifizierte (aufrufend)ocaml_lib
Ich werde ocamlfind ein anderes Mal verwenden, aber ich bin nicht sicher, wie ich den Ordner als Modul richtig in das Projekt einbinden kann. Ich habe eineparser.mlpack
Datei und füllte es mit den richtigen Modulen enthalten sein (zB "Parser / Date", etc.), schrieb einparser.mli
im Stammverzeichnis des Verzeichnisses für ihre Implementierungen und änderte die_tags
Datei (siehe unten).
Während der Kompilierung wird das Parserverzeichnis ordnungsgemäß durchlaufenparser.cmi
, parser.mli.depends
wurden beide in der erstellt_build
Verzeichnis; so gut wie alle*.cm[xio]
Dateien im Unterverzeichnis Parser.
Ich habe das Gefühl, ich mache vielleicht etwas überflüssiges, aber unabhängig davon das Projektimmer noch kann das Parser-Modul beim Kompilieren nicht finden!
Vielen Dank!
_Stichworte
debug : true
<*.ml> : annot
"parser" : include
<parser/*.cmx>: for-pack(Parser)
<curlIO.*> : use_curl
<mySQL.*> : use_mysql
<**/*.native> or <**/*.byte> : use_str,use_unix,use_curl,use_mysql
Kompilierungsfehler
/usr/local/bin/ocamlopt.opt unix.cmxa str.cmxa -g -I /usr/local/lib/ocaml/site-lib/mysql mysql.cmxa -I /usr/local/lib/ocaml/curl curl.cmxa curlIO.cmx utilities.cmx date.cmx fraction.cmx logger.cmx mySQL.cmx data.cmx project.cmx -o project.native
File "\_none\_", line 1, characters 0-1:
Error: **No implementations provided for the following modules:**
Parser referenced from project.cmx
Command exited with code 2.
Du wirst es bemerken-I parser
ist in der obigen Verknüpfungsphase nicht enthalten; eigentlich ist keine der parser bezogenen dateien enthalten!
bearbeiten: Neue Details aus Kommentaren hinzugefügt und unten beantwortet.