zu kompilieren Ich habe oasis
verwendet, um mein Projekt mit einigen externen Paketen zu erstellen. Jetzt möchte ich auch das Core-Paket von Jane Street verwenden. Um mit Core zu kompilieren, müssen Sie jedoch das -thread
-Flag an ocamlfind
übergeben, z. dies wie:So fügen Sie -ohre zu _oasis hinzu, um mit Core
ocamlfind ocamlc -linkpkg -thread -package core foo.ml -o foo
Wie kann ich feststellen oasis
die -thread
Flagge hinzufügen? Gerade jetzt, meine _oasis-Datei enthält in etwa wie folgt:
Executable "foo"
BuildDepends: core,batteries,bar
Path: src
MainIs: foo.ml
CompiledObject: best
Bar eine Sammlung meiner eigenen Dienstprogramme aus dem selben Projekt. Als ich oasis setup
und make
laufen, bekomme ich diesen Fehler:
ocamlfind: Error from package `threads': Missing -thread or -vmthread switch
ich im Oasis Handbuch sah, und weder die common fields für alle Abschnitte der _oasis Datei noch die fields that are specific to the Excutable section scheinen für das Hinzufügen einer Befehlszeile geeignet zu sein Flagge für ocamlfind
.
Ich dachte, dass this answer relevant sein könnte, aber wenn ich die zusätzlichen Schlüssel probierte Zugabe vorgeschlagen, mit -thread
als Wert für XOCamlbuildExtraArgs
, ich habe einen Fehler:
E: Field XOCamlbuildExtraArgs is not defined in schema Executable
Danke ivg. Das hat den Trick gemacht. (_tags wird automatisch durch 'oasis setup' generiert, aber nicht überschrieben, sobald es generiert wurde, scheint es, also sollte diese Lösung im Allgemeinen funktionieren.) – Mars
Für jeden, der mitkam, war das, was ich in diesem Kommentar schrieb, falsch. _Tags können durch 'oasis setup' verändert werden, aber die Zusatzzeile bleibt am Ende wie sie ist. – Mars
Ich versuchte das oben, mit 'BuildDepends: \ n core', in einem sehr einfachen einzeiligen" Projekt ", aber ich bekomme:' Fehler: Dateien /usr/local/lib/ocaml/threads/threads.cmxa und /usr/local/lib/ocaml/threads/threads.cmxa definieren beide ein Modul namens Thread' (ja, das ist der gleiche Weg zweimal ... wtf?) – ELLIOTTCABLE