OCaml 프로젝트를 구성하고 빌드하는 데 선호되는 방법은 무엇입니까?
생태계를 처음 접하는 사람들에게는 중소 규모의 OCaml 프로젝트를 구성하고 관리하는 데 정식으로 선호하는 방법이 무엇인지 명확하지 않습니다. ocamlc
, & c 의 기본 사항을 이해합니다 . – 기존의 단순한 기존의 UNIX C 컴파일러를 사용할 수 있습니다. 그러나 수준 높은 파일의 일회성 절차를 간단하고 명확하게 관리하는 방법입니다. 문제는 외장 인 도구를 찾는 것이 아니라 표준 OCaml 프로젝트를 구성하고 구축하기 위해 커뮤니티의 경험에 의해 하나 또는 몇 가지 올바른 방법을 보는 것입니다.
내 모델 사용 사례는 순수 OCaml 또는 OCaml과 C하지의 겸손하지만 사소 않은 프로젝트입니다. 그런 프로젝트 :
- 여러 소스 파일을 포함
- 여러 표준 라이브러리에 대한 링크
- 하나 이상의 도서관에 대한 링크
- 선택적으로 C 라이브러리 및 OCaml 래퍼를 하위 프로젝트로합니다, (3)에서와 같이 포함 관리하고 라이브러리로 포함 할 수도 있음).
몇 가지 대체 도구가 지원됩니다.
- 사용자 정의 Makefile은 대부분의 오픈 소스 OCaml 패키지에서 일반적인 표준으로 보이지만, 겸손한 C / C ++ 프로젝트보다 훨씬 더 복잡하고 장황하게 보입니다. 설상가상으로, 단순 해 보이는 많은 OCaml 라이브러리는 더 큰 규모를 위해 autoconf / automake를 맨 위에 계층화합니다.
- ocamlbuild 는 최소한의 구성으로 빌드를 자동화하기 위해 추가 할 현대적인 완성 된 코드를 제공하는 보이지만, 신규 사용자에게는 잘 문서화되지 않았으며 OCaml 생태계의 입문 자료에 예시로 표시되지 않았으며 게시 된 다양한 OCaml 프로젝트에서 발생했습니다. 사용되지 않습니다. 나는 영감을 찾아 내.
- OASIS 는 Cabal과 같은 패키지 관리자 및 라이브러리 빌드를 지원하기 위해 다른 빌드 시스템 위에있는 규칙 및 라이브러리 코드 계층 인 것입니다.
(또한 OCaml의 및 OCaml의 - 메이크업 노나 OCamlMakefile을 포함하여 GNU 표준 규칙 템플릿을 제공하는 OCaml의 -make 노나 OCamlMakefile을 포함한 공통 언어에, 대한 표준 규칙 모음도 계명 포함 하는 자체 스타일 " " 인 것처럼 보이는 OMake 를 보았습니다 .)make++
make
이 중 OCaml 빌드를 관리하는 현대적인 방법이 있습니까?
프로젝트 파일은 어떻게 가장 잘 구성되어 있습니까?
라이브러리 라이브러리는 어떻게 포함되고 관리되고? 시스템 수준에서 설치하는 것이 선호하는 것이? 아니면 프로젝트에 로컬로 관리하는 표준 간단한 방법이 있습니까? 저는 프로젝트가 가능한 한 독립적 인 모델을 선호합니다.
사용 가능한 옵션의 전체 목록이 질문이 답변이 없습니다. 내 개인적인 권장 사항은 ocamlbuild를 사용하는 것입니다. 여기 에 나의 ocamlbuild.ml 파일 은 좋은 시작입니다. 다양한 라이브러리에 의존하는 프로젝트를 쉽게 이용할 수 있습니다. 나는 그것이 C 라이브러리에 바인딩하는 경우 처리 할 생각하지 않지만, 도움이 될 수 있는 추가 예제가 위키 에 있습니다.
어떤 사람들은 ocamlbuild가 또 다른 빌드 도구이기 때문에 패키지 관리자 작업을 복잡하게 만들기 때문에 반대합니다. 그러나 사용하기 일반적으로 배포판에있는 것이 사실이 점점 더 많이 사용됩니다.
이 모든 것을 건너 뛰고 오아시스를 직접 사용할 수도 있습니다. 매우 새롭고 릴리스가 아직 발표되지 않았습니다. myocamlbuild.ml이 자동으로 생성됩니다. 이것은 아마도 아주 가까운 미래에 갈 수있는 방법 일 것입니다. 또한 오아시스를 사용하면 OCaml 용 CPAN 유사 시스템 인 oasis-db의 혜택을 즉시 누릴 수 있습니다.
라이브러리 관리와 관련하여 대답은 ocamlfind입니다. OCaml의 여러 인스턴스가 설치되어있는 경우 ocamlfind 복사본을 호출하면 모든 라이브러리에 대해 체계적으로 ocamlfind를 사용하는 가정 할 때 라이브러리에 대한 모든 참조가 해당 특정 인스턴스에 대한 참조가됩니다. 저는 현재 godi를 사용하여 OCaml과 라이브러리를 설치합니다. ocamlfind를 사용하며 여러 OCaml 인스턴스를 설치하는 데 문제가 없습니다.
개인적으로 나는 ocamlbuild에 +1을 줄 것입니다. 기본 규칙은 하나의 명령으로 중소 규모 프로젝트를 충분하며 최소한의 구성이 없습니다. (소스를 빌드 결과와 혼합하지 않음). 원하는대로 사용자 수 있습니다. 내가 일하는 회사에서 우리는 큰 프로젝트 (Ocaml + some C + some preprocessing + ...)를 위해 사용하고 있고 그것은 매력처럼 작동합니다 (그리고 Makefiles보다 훨씬 덜 골치에서 일을합니다).
매뉴얼에있는 웹 페이지 는 사용자 가이드 (저자 의 웹 페이지 에서 구할 수 있음)가 시작될 생각합니다 . 더 펑키 한 물건은 좀 더 파는 것이 필요할 수 있습니다.
OMake의 경우 +1.
몇 년 전에 빌드 인프라를 개선하고 다음과 같은 MMS OMake를 선택했습니다.
- 당사의 제품은 C, C ++, Managed C ++, Ruby 및 OCaml의 혼합으로 구성됩니다.
- 우리는 Linux와 Windows를 모두 대상으로합니다.
- 빌드 할 때 데이터베이스와 상호 작용합니다.
- 일부 제작에서는 OCaml 3.10을 받았습니다.
- 우리의 원래 빌드 시스템은 autoconf / automake를 사용했습니다.
- 소스 외부 빌드 *가 필요합니다.
솔직히 말해서 우리가 ocamlbuild로 할 수 있었는지 모르겠지만 테스트하지 않았습니다. 이 도구는 OCaml의 버그 추적기에서 관련 활동이 있기 때문에 확실합니다. ocamlbuild를 선택하는 경우 버전의 OCaml이 최신 확인하십시오.
* OMake는 명확하지 않은 방식으로 소스 외부 빌드를 지원합니다. 소스가 읽기 전용 일 때도 몇 가지 문제가 있습니다. 우리는 OMake의 Windows 버전을 패치하고 다시 빌드해야했습니다.
좋은 질문. 나는 다음과 같이 말하는 경향이 있습니다.
1) ocamlbuild 처음이고 빠르며 공식 배포판에서 제공하는 기본 도구이기 때문에 표준 방법이 될 것입니다. 시간이 지남에 따라 남아있을 가능성이 높기 때문에 공식 배포에 포함되어 사실이 좋은 점입니다. 또한 ocamlfind가 활성화되어 있으므로 패키지 설치를위한 또 다른 표준 인 ocamlfind로 패키지를 관리 할 수 있습니다 (ocamlfind는 C의 pkg-config와 약간의 가능성이 있습니다).
2) 충분하지 않습니다. C와의 통합은 ocamlbuild와 기본입니다. 그래서 여기서 마지막으로 질문에 답하기 위해 오아시스를 사용하라고 조언 할 것입니다. 나는 또한 OMake를 시도했지만 그것을 좋아하지 않았습니다.
3) 그러나 다른 사람들이 자신의 컴퓨터에서 프로젝트를 다운로드하고 빌드 할 수 있고 빌드가 제대로 작동하지 않을 수 있습니다. 또한 oasis는 pkg-config를 처리하지 않습니다. 저는 ocaml-autoconf (autotools 용 ocaml 매크로)를 사용하는 것이 좋습니다. autotools는 C 라이브러리를 관리하기위한 표준이고 패키지 관리자에게 잘 있기 때문입니다. 교차도 처리 할 수 있습니다.
=> ocamlbuild가있는 ocaml-autoconf
'ProgramingTip' 카테고리의 다른 글
F #의 거듭 제곱 연산자가 부동 소수점 숫자에만 작동하는 이유는 무엇입니까? (0) | 2020.12.27 |
---|---|
대부분의 UI 프레임 워크가 단일 인 이유는 무엇입니까? (0) | 2020.12.27 |
Quartz.NET 구성 파일에 대한 문서는 어디에 있습니까? (0) | 2020.12.27 |
Django REST 프레임 워크의 중첩 된 리소스에 필터를 적용해야합니까? (0) | 2020.12.27 |
Android에서 최고의 REST 클라이언트 프레임 워크 / 유틸리티 (0) | 2020.12.27 |