生態系統新手尚不清楚建立和管理建築中小型OCaml項目的正規首選方式。我理解ocamlc
,& c的基礎知識 - 它們反映了傳統的UNIX C編譯器,看起來很簡單。但是,在單個文件的一次編譯級別之上,不清楚如何最好地簡單幹淨地管理編譯。這個問題並不是在尋找潛在的工具,而是通過構建和建立標準的OCaml項目來看到一種或幾種正確的(足夠的)方法 - 正如社區的經驗所證實的那樣。構建和構建OCaml項目的首選方式是什麼?
我的模型用例是一個適度但不重要的項目,純OCaml或OCaml加上C依賴項。這樣的項目:
- 包含了一些源文件
- 鏈接到一些標準庫的
- 鏈接到一個或多個第三方庫
- 任選地包括C庫和OCaml的包裝爲的子項目(雖然這也可以單獨管理,並將其作爲一個第三方庫,如(3))
若干備選工具中脫穎而出:
- 自定義Makefiles似乎是大多數開源OCaml軟件包中的通用標準,但看起來令人沮喪和複雜 - 甚至比適度的C/C++項目更加如此。更糟糕的是,許多看起來很簡單的OCaml庫在autoconf/automake層上面更加複雜。
- ocamlbuild似乎提供了一個現代的,簡化的機制,以最少的配置進行自動化構建,但對於新手來說並沒有很好的文檔記錄,也沒有在OCaml生態系統的介紹性材料中用實例代表,也沒有被任何已發佈的OCaml項目,我曾瀏覽過靈感。
- OASIS似乎是其他構建系統頂層的約定和庫代碼層,以支持構建包管理器和庫,如Cabal。
(I也看到OMake,這似乎是一個自封「make++
」,這也包括一套共同語言,包括OCaml的標準規則,以及ocaml-make孃家姓OCamlMakefile,提供的標準規則的模板對於GNU make
。)
這些是管理OCaml構建的首選的現代方式嗎?
項目文件的結構如何?
如何包含和管理第三方庫依賴項?是否希望在系統級別安裝它們,或者是否存在以本地方式管理項目的標準和直接方式?我更喜歡一個模型,儘可能保持項目的獨立性。
的ocamlbuild鏈接(現在)打破了。 –
鏈接現已修復 – ygrek