2015-02-27 13 views
5

Począwszy od Building OCaml code that uses list comprehension, mogę użyć pliku _tags do wykonania ocamlbuild z mniejszymi opcjami kompilacji.Jaki jest cel pliku _tags z OCaml i jak interpretować zawartość?

$ cat _tags 
<**/*> : package(camlp4),syntax(camlp4o),package(pa_comprehension) 

Z Batteries introduction, ja też trzeba mieć _tags plik do korzystania z pakietu akumulatorów.

<*>: package(batteries) 

Dlaczego pierwszy przykład używa <**/*> gdy drugi przykład używa <*>? W ogóle, jaki jest cel pliku _tags w ocamlbuild? Czy masz jakieś dobre tutoriale na ten temat?

Odpowiedz

6

Plik _tags oprócz nazwy myocamlbuild.ml stanowi podstawę systemu kompilacji ocamlbuild.

ocamlbuild to bardzo ogólne narzędzie, które może kompilować wszystko. Sterowany jest przez solver, który według celu, ustawionego przez użytkownika, znajduje rozwiązanie, które może zaspokoić cel. Rozwiązaniem jest łańcuch reguł stosowanych do plików. Pliki mogą być oznaczone tagami. Tagi mogą zmieniać reguły. Na przykład może dodawać flagi, takie jak włączanie profilowania lub łączenie z biblioteką.

Plik _tags zapewnia mechanizm przypisywania znaczników do plików i ma prostą gramatykę:

pattern ":" tag "," {tag}. 

Co jest na lewo od : jest rzeczywiście wzorzec lub wyrażenie regularne. Każdy plik pasujący do wyrażenia zostanie przypisany wraz ze wszystkimi znacznikami, które pojawią się na prawo od :.

oznacza dla wszystkich plików w tym folderze, a wszystkie podfoldery - skrót: true. <*> oznacza dla wszystkich plików w tym folderze (bez zstępowania w podfolderach). Inne przykłady to: <*.ml>, <*.cmx> lub <**/*.cma> (btw or może również służyć do budowy wzorca).

OCamlbuild jest udokumentowany w OCaml Manual, istnieje również dump starego wiki, z dużą ilością informacji.

Ale zabawa polega na tym, że zwykle nie trzeba tego wiedzieć, aby używać OCaml. Dostępne jest narzędzie OASIS, które zautomatyzuje wszystkie zadania i utworzy dla Ciebie plik _tags z prostej i wysokopoziomowej definicji.