2017-06-19 3 views
0

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 

Antwort

2

Sie müssen die folgenden Zeilen hinzufügen auf Ihre _tags Datei:

<**/*>: thread 

Es wird ein paar Sachen zwischen den OASIS_START und OASIS_STOP Trennzeichen, fügen sie nichts zwischen ihnen, sondern vor oder nach.

+0

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

+0

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

+0

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

Verwandte Themen