2017-01-24 10 views
1

В моей OCaml-программе используются некоторые функции стандартной библиотеки OCaml, которые были представлены только в версии 4.01.0. Как я могу организовать, когда мой пользователь компилирует мой код, компилятор испускает ошибку, если версия компилятора OCaml не равна 4.01.0 или выше? Я чувствую, что эта ошибка будет более полезной, чем просто общая ошибка «несвязанной переменной».Требовать определенную версию OCaml в make-файле

Я вижу, что ocaml -vnum испускает «4.01.0», поэтому, я думаю, я мог бы попытаться проверить это в моем Makefile, но, возможно, есть правильный способ сделать это уже? Я использую OCamlBuild, если это помогает.

Мой текущий Makefile выглядит следующим образом, кстати:

all: 
    @ echo "Attention: requires OCaml version >= 4.01.0." 
    ocamlbuild -cflag -annot -lib str -lib unix name_of_my_project.native 
    mv name_of_my_project.native name_of_my_project 

clean: 
    ocamlbuild -clean 
    rm -f name_of_my_project 

ответ

1

Существует всегда больше, чем один правильный способ :) Мой правильный путь будет использовать oasis. Другие, вероятно, будут использовать Autotool AC_PROG_OCAML с указанной версией. Существуют и другие системы сборки, которые, вероятно, имеют свои собственные методы. Когда вы выпустите пакет для opam (it is also very easy), вы добавите ограничения в файл opam, чтобы менеджер пакетов даже не попытался его создать.

Итак, подведем итоги моего личного совета - использовать оазис. Это очень просто, но все же довольно универсально. В вашем случае файл _oasis управления должен выглядеть примерно так:

OASISFormat: 0.4 
Name:  name 
Version:  0.0.1 
OCamlVersion: >= 4.01.0 
Synopsis: Cool package 
Authors:  Myself 
Maintainers: Myself 
License:  MIT 
Copyrights: (C) Myself 
Plugins:  META (0.4), DevFiles (0.4) 
BuildTools: ocamlbuild 


Executable "project" 
    Path:   src 
    MainIs:   project.ml 
    CompiledObject: best 
    BuildDepends: str, unix 

После того как файл будет создан, вы можете создать конфигурационный скрипт с

oasis setup 

И после того, как он будет готов (он также будет создавать setup.ml файл), вы можете использовать общий:

./configure 
    make 
    make install 
1

Если у вас уже есть Makefile, вставив чек там, вероятно, будет наиболее прагма чтобы достичь этого. Может быть сделано с использованием выражений Makefile или оболочки. Вот версия оболочки аналогичной проверки: https://github.com/alavrik/piqi/blob/master/configure#L144

В некоторой степени, я искал условную компиляцию для OCaml и закончил с использованием optcomp. Вот example.

 Смежные вопросы

  • Нет связанных вопросов^_^