2011-09-01 7 views
6

Próbuję utrzymać mój projekt w stanie zamkniętym, z wszystkimi głównymi zależnościami bibliotek zewnętrznych, które są budowane i odwoływane w repozytorium projektu. Główne części ocaml mojego projektu opierają się na ocamlbuild.W jaki sposób można użyć zestawu narzędzi ocamlfind/ocamlbuild z lokalnymi kopiami pakietów?

Ale w przypadku złożonych pakietów, takich jak baterie w zestawie, wydaje się, że istnieje silne oczekiwanie, że zostaną one połączone w projekt za pośrednictwem systemu ocamlfind. ocamlfind wydaje się zakładać, że pakiety zostaną zainstalowane globalnie. (Rozumiem, że pozwala on zmiennym środowiskowym i conf na wskazanie alternatywnych lokalizacji, ale zasadniczo wydaje się, że jest zbudowany na założeniu, że pakiety są skonfigurowane globalnie - nie ma odpowiednika flag -I lub -L, aby dynamicznie rozszerzać ścieżkę wyszukiwania dla na przykład, pakiety mogą być w stanie dynamicznie nadpisać konfigurację ocamlfind w celu wyszukania drzewa lokalnego projektu, ale jest to znacznie trudniejsze niż zwykłe argumenty, a także wydaje się, że byłoby to trudne jednocześnie usuwania wykrywalność podstawowych pakietów systemowych w podstawowym site-lib, które również mogą być potrzebne.)

Jaka jest rozsądna strategia i budowy przed nietrywialnej 3 par paczki w drzewie projektu dla projektu korzystającego z ocamlbuild?

Odpowiedz

3

Używanie zmiennych środowiskowych (lub oddzielnego findlib.conf) jest sposobem na przejście (i łatwe). Nie wymaga to też usuwania wykrywalności pakietów globalnych, zobacz odpowiednie instrukcje środowiskowe dla zmiennych środowiskowych 0123).

Zasadniczo można ustawić destdir do lokalnej drogi podczas instalacji pakietów z projektem lokalnym, a prepend do path podczas korzystania z nich (nie zapomnij, aby utworzyć stublibs w destdir (i dodać go do ld.conf w stdlib jeśli jesteś kodu bajtowego budowy pliki binarne)).

PS Myślę, że jest to podejście stosowane w ocsigen-bundler.

Proszę powiedzieć, czy występują jakiekolwiek problemy (ponieważ jestem zainteresowany wykorzystaniem tego samego podejścia).

+0

Do tej pory nie zwijałem tej trasy, więc byłem powolny, aby potwierdzić sukces, ale spodziewam się, że powinien zadziałać. – jrk

Powiązane problemy