2014-12-06 9 views
6

Chciałbym przekazać flagę -S do ocamlopt podczas budowania za pomocą poleceń ocamlbuild i corebuild.Jak przekazać flagę -S do ocamlopt z ocamlbuild?

Rozumiem, że wykonanie ocamlbuild -cflag -S ... nie zadziała, ponieważ -S flaga istnieje tylko dla ocamlopt, a nie ocamlc.

Jak mogę to zrobić, używając plików _tags?

Odpowiedz

4

Oto jeden ze sposobów, aby to zrobić za pomocą myocamlbuild.ml i _tags.

W myocamlbuild.ml, dodać flag dyspozycję niech ocamlbuild rozpoznać nowy tag - tutaj keep_asm - co pozwoli -S dla wybranych plików podczas kompilacji do rodzimej:

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

Bez "native" ciąg na liście przekazanej do flag, flaga zostanie włączona dla każdego etapu kompilacji przy użyciu ocaml (jak wskazują ciągi "ocaml" i "compile") i będą wyzwalane, gdy zostanie wywołany ocamlc, czego nie chcesz.

więc dla pełnego samodzielny myocamlbuild.ml robi tylko wyżej, to okaże się, jak:

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 

raz, że masz nowy tag zdefiniowane, można go używać w Twój plik _tags jest taki sam, jak w przypadku innych tagów, na przykład:

<myfile.ml>: use_bigarray, keep_asm 
Powiązane problemy