我有一个新项目,我试图用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
变量是否是解决方案。但如果是的话,我不理解这个警告。
对于那些想尝试的人:
下载why3
./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
答案 0 :(得分:1)
嗯,这是一个非常非标准的方法,你正在尝试。不确定,为什么需要它,因为通常最好只安装包。无论如何,当您使用OCAMLPATH
变量时,您需要将其传递给lib文件夹的路径,该文件夹包含分别包含META
文件的文件夹。我有以下存储库结构:
.
├── proj
└── why3-0.88.3
并在proj
文件夹中,我使用以下OCAMLPATH运行configure
脚本:
OCAMLPATH=../why3-0.88.3/lib/:$OCAMLPATH ./configure
之后一切正常,你甚至不需要再将OCAMLPATH
变量传递给编译,链接或执行阶段。