ocamlbuild指定输出位置/名称

时间:2015-06-03 11:45:02

标签: ocaml ocamlbuild

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

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

2 个答案:

答案 0 :(得分:2)

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

但是对于大多数用途来说,使用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 

会做的工作。

OCamlfind

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

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

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

答案 1 :(得分:1)

输入ocamlbuild --help后,我找不到这样的选项。

一种解决方案是编写一个脚本:

#!/bin/bash 

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

编辑:

根据ivg的建议,您应该将mv myapp.native bin / myapp替换为cp -L myapp.native bin/myapp

也许有人可以提供这个选项,我发现这个选项很有趣但是在用户手册中却没有。所以一种解决方案是使用脚本。