在makefile中需要特定的OCaml版本

在makefile中需要特定的OCaml版本,makefile,ocaml,version,ocamlbuild,Makefile,Ocaml,Version,Ocamlbuild,我的OCaml程序使用OCaml标准库中的一些函数,这些函数仅在版本4.01.0中引入。当用户编译代码时,如果OCaml编译器的版本不是4.01.0或更高版本,如何安排编译器发出错误?我觉得这个错误比一般的“未绑定变量”错误更有帮助 我看到,ocaml-vnum发出“4.01.0”,所以我想我可以尝试在我的Makefile中检查它,但也许已经有了一种正确的方法来做到这一点?如果有帮助的话,我正在使用OCamlBuild 顺便说一下,我当前的Makefile如下所示: all: @ ech

我的OCaml程序使用OCaml标准库中的一些函数,这些函数仅在版本4.01.0中引入。当用户编译代码时,如果OCaml编译器的版本不是4.01.0或更高版本,如何安排编译器发出错误?我觉得这个错误比一般的“未绑定变量”错误更有帮助

我看到,
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

正确的方法总是不止一种:)我的正确方法是使用。其他人可能会使用具有指定版本的Autotool。还有其他构建系统,它们可能有自己的方法。当您将包发布到opam()时,您将向opam文件添加约束,以便包管理器甚至不会尝试构建它

所以,总结一下我的个人建议就是使用oasis。它非常简单,但仍然非常通用。在您的情况下,
\u 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

如果您已经有一个Makefile,那么插入一个check可能是实现这一点的最实用的方法。可以使用Makefile表达式或shell来完成。下面是一个类似检查的shell版本:

有点相关,我在寻找OCaml的条件编译,最后使用了。这是一个例子