1

我可以使用 ocamlbuild 工具指定构建位置和文件名吗?我想说(用伪代码):

ocamlbuild myapp.ml -b native -o bin/myapp
4

2 回答 2

2

没有这样的选项,但ocamlbuild它是可扩展的,并允许您添加自己的选项Options.add。当然,您还需要添加一些实现。基本上,劫持规则native并通过安装程序扩展它可能会起作用。要扩展ocamlbuild您应该编写一个插件(其他选项是创建您自己的独立可执行文件,并使用它而不是 ocamlbuild,这就是我们在项目中所做的)。

但对于大多数用途而言,使用标准工具(ocamlfindoasis. 我建议看后者,因为它更高级。

绿洲

oasis您需要编写一个简单的_oasis文件(或使用交互oasis quickstart方式编写它)。最小文件看起来像这样:

OASISFormat: 0.4
Name:        myapp
Version:     0.0.1
Synopsis:    My first application in oasis
Authors:     Authors list
Maintainers: Maintainer Name 
License:     MIT
Copyrights:  (C) Copyright Holder
Plugins:     META (0.4), DevFiles (0.4)
BuildTools: ocamlbuild

Executable "myapp"
  Path:           .
  MainIs:         myapp.ml
  Install:        true
  CompiledObject: best

文件完成后,运行

oasis setup

这将生成Makefileconfigure脚本。跑

./configure

像往常一样检查和设置您的环境。例如,./configure --prefix=$HOME将设置您的构建系统以安装到您的主文件夹(即,可执行文件~/bin等)。我通常更喜欢安装到 opam 堆栈上,并使用./configure --prefix=$(opam config var env)

最后,通常的一对

make && make install 

会做这项工作。

OCamfind

ocamlfind仍然需要您编写 META 文件。通常他们通过从一些现有项目中复制粘贴和编辑 META 文件来编写它们。但是写一个并不难,因为它有很好的文档记录

编写元数据后,您可以使用ocamlfind install具有-destdir选项的子命令。

ocamlfind不处理可执行文件,只处理库。所以这可能不适合你。

于 2015-06-03T13:00:20.213 回答
1

使用 enter ocamlbuild --help,我找不到这样的选项。

一种解决方案是编写一个脚本来执行此操作:

#!/bin/bash 

ocalmbuild myapp.native // build your executable
mv myapp.native bin/myapp // rename it

编辑:

按照 ivg 的建议,您应该将mv myapp.nativebin/myapp行替换为cp -L myapp.native bin/myapp.

也许有人可以给出这个选项,我觉得这很有趣,但在用户手册中,没有。所以一种解决方案是使用脚本。

于 2015-06-03T12:12:57.940 回答