2014-12-06 15 views
6

Mi piacerebbe passare il flag -S a ocamlopt quando si costruisce con i comandi ocamlbuild e corebuild.Come passare flag -S a ocamlopt con ocamlbuild?

Capisco che fare ocamlbuild -cflag -S ... non funziona dal -S flag esiste solo per ocamlopt e non ocamlc.

Come posso farlo utilizzando i file _tags?

risposta

4

Ecco un modo per farlo utilizzando myocamlbuild.ml e _tags.

In myocamlbuild.ml, aggiungere un'istruzione flag lasciare ocamlbuild riconoscere un nuovo tag - qui keep_asm - che consentirà -S per i file selezionati durante la compilazione di nativo:

flag ["ocaml";"compile";"native";"keep_asm"] (S [A "-S"]); 

Senza la stringa "native" nell'elenco passato a flag, la bandiera sarebbe abilitata per qualsiasi compilazione utilizzando ocaml (come indicato dalle stringhe "ocaml" e "compile") e si attiva quando viene richiamato lo ocamlc, che non si desidera.

Così, per uno stand alone completo myocamlbuild.ml fare solo quanto sopra, questo risulterebbe come:

open Ocamlbuild_plugin;; 
open Command;; 

dispatch begin function 
    | Before_rules -> 
    begin 
    end 
    | After_rules -> 
    begin 
     flag ["ocaml";"compile";"native";"keep_asm"] (S [ A "-S"]); 
    end 
    | _ ->() 
end 

Una volta, hai quel nuovo tag definito, è possibile utilizzarlo in il tuo file _tags come con qualsiasi altro tag, ad esempio:

<myfile.ml>: use_bigarray, keep_asm