使用外部库(OASIS,OCamlfind)编译



我有一个新项目,我正在尝试用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变量传递给编译、链接或执行阶段。

相关内容

  • 没有找到相关文章

最新更新