在makefile中需要特定的OCaml版本
我的OCaml程序使用OCaml标准库中的一些函数,这些函数仅在版本4.01.0中引入。当用户编译代码时,如果OCaml编译器的版本不是4.01.0或更高版本,如何安排编译器发出错误?我觉得这个错误比一般的“未绑定变量”错误更有帮助 我看到,在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-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的条件编译,最后使用了。这是一个例子