我有一个新项目,我正在尝试用OASIS编译。除了一个软件包外,我的所有软件包都安装了 opam。
我的_oasis
文件如下所示:
(* usual package fields *)
Executable myexe
Path: src
BuildTools: ocamlbuild
MainIs: myexe.ml
BuildDepends:
some_packages_installed_with_opam
mylocalpackage
我尝试了oasis setup
然后./configure
但OCamlfind回答说找不到mylocalpackage
。所以我决定看看 OCamlfind 在哪里查找软件包,发现您可以设置一个OCAMLPATH
变量来添加可能安装软件包的目录。所以我做了export OCAMLPATH=path_to_mylocalpackage:$OCAMLPATH
,再试一次。
oasis setup
给了我这个结果:
findlib: [WARNING] While parsing 'path_to_my_local_package/META.in':
The `directory' directive is required in this META definition
ocamlfind query mylocalpackage
给了我这个结果:
ocamlfind: Package `mylocalpackage' not found
我不知道我是否应该写_oasis
在哪里可以找到这个包,或者更改OCAMLPATH
变量是否是解决方案。但如果是,我不明白警告。
重现步骤
对于那些想尝试的人:
下载原因3
./configure --enable-local make
使用此
_oasis
文件创建新项目OASISFormat: 0.4 Name: myexe Version: 0.1 Synopsis: test file Authors: SO License: CC-BY-NC-SA Plugins: StdFiles (0.4), DevFiles (0.4) Alphafeatures: ocamlbuild_more_args XOCamlbuildExtraArgs: -use-ocamlfind Executable myexe Path: src BuildTools: ocamlbuild MainIs: myexe.ml BuildDepends: unix, str, num, dynlink, zip, menhirLib, why3 NativeOpt: -dtypes -g -annot ByteOpt: -dtypes -g -annot CompiledObject: best
oasis setup ./configure
- 你应该有这个错误:
ocamlfind: Package 'why3' not found
嗯,这是你正在尝试的一种非常非标准的方法。不确定,为什么需要它,因为通常最好只安装软件包。无论如何,当您使用OCAMLPATH
变量时,您需要向它传递一个指向 lib 文件夹的路径,该文件夹包含分别包含META
文件的文件夹。我有以下存储库结构:
.
├── proj
└── why3-0.88.3
在proj
文件夹中,我使用以下 OCAMLPATH 运行configure
脚本:
OCAMLPATH=../why3-0.88.3/lib/:$OCAMLPATH ./configure
之后一切正常,您甚至不再需要将OCAMLPATH
变量传递给编译、链接或执行阶段。