No está claro para los recién llegados al ecosistema cuál es la forma canónica preferida para estructurar y administrar proyectos OCaml de tamaño pequeño a mediano. Entiendo los conceptos básicos de ocamlc
, & c .-- reflejan los compiladores convencionales UNIX C lo suficiente como para parecer sencillo. Pero, por encima del nivel de compilación única de archivos individuales, no está claro cuál es la mejor manera de administrar la compilación de manera simple y limpia. El problema no es buscar herramientas potenciales, sino ver una o varias formas correctas (suficientes), según lo validado por la experiencia de la comunidad, para estructurar y construir proyectos estándares de OCaml.¿Cuál es la forma preferida de estructurar y construir proyectos OCaml?
Mi caso de uso de modelo es un proyecto modesto pero no trivial, de OCaml puro u OCaml más una dependencia de C. Tal proyecto:
- contiene una serie de archivos de origen
- enlaces a una serie de bibliotecas estándar
- enlaces a bibliotecas de uno o más de 3 ª parte
- incluye opcionalmente una biblioteca C y la envoltura OCaml como subproyecto (aunque esto también podría ser administrado por separado y se incluye como una biblioteca tercera parte, como en (3))
Varias herramientas alternativas destacan:
- Los Makefiles personalizados parecen ser el estándar común en la mayoría de los paquetes OCaml de código abierto, pero parecen frustrantemente prolijo y complejo, incluso más que para los modestos proyectos C/C++. Peor aún, muchas incluso aparentemente simples bibliotecas OCaml capa autoconf/automake en la parte superior para una complejidad aún mayor.
- ocamlbuild parece ofrecer un mecanismo moderno y simplificado para automatizar construcciones con configuración mínima, pero no está bien documentado para los recién llegados, ni representados por ejemplos en los materiales introductorios en el ecosistema OCaml, ni visiblemente utilizado por cualquiera de los varios publicados Proyectos OCaml que busqué en busca de inspiración.
- OASIS parece ser una capa de convención y código de biblioteca encima de otros sistemas de compilación para admitir la construcción de un administrador de paquetes y una biblioteca, como Cabal.
(También he visto OMake, lo que parece ser un autodenominado "make++
", que también incluye un conjunto de reglas estándar para lenguajes comunes, incluyendo OCaml, y ocaml-make de soltera OCamlMakefile, proporcionando una plantilla de reglas estándar para GNU make
.)
¿Alguna de estas es una forma preferida y moderna de administrar las compilaciones de OCaml?
¿Cómo se estructuran mejor los archivos de proyecto?
¿Cómo se incluyen y administran las dependencias de bibliotecas de terceros? ¿Se prefiere instalarlos a nivel del sistema o existe una forma estándar y directa de administrarlos localmente en un proyecto? Preferiría mucho un modelo en el que los proyectos permanezcan tan autónomos como sea posible.
El enlace ocamlbuild es (ahora) rota. –
El enlace ahora está fijado – ygrek