是否可以使用ocamlbuild工具指定生成位置和文件名?我想(用伪码)说:
ocamlbuild myapp.ml -b native -o bin/myapp发布于 2015-06-03 13:00:20
没有这样的选项,但是ocamlbuild是可扩展的,允许您使用Options.add添加自己的选项。当然,您还需要添加一些实现。基本上,劫持native规则并通过安装过程对其进行扩展可能是可行的。要扩展ocamlbuild,您应该创建一个插件(其他选项是创建您自己的独立可执行文件,并使用它而不是ocamlbuild,这就是我们在项目中所做的)。
但在大多数情况下,使用ocamlfind、oasis等标准工具就足够了。我建议考虑后者,因为它是较高的水平。
绿洲
使用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它将生成Makefile和configure脚本。跑
./configure和往常一样检查和设置您的环境。例如,./configure --prefix=$HOME将设置您的构建系统以安装到您的主文件夹中(例如,将可执行文件安装到~/bin,等等)。我通常更喜欢安装在opam堆栈上,并使用./configure --prefix=$(opam config var env)。
最后,通常的一对
make && make install 就能完成任务了。
OCamlfind
ocamlfind仍然需要您编写元文件。通常,他们只是通过复制、粘贴和编辑现有项目中的元文件来编写它们。但是写一个并不难,因为它是非常好的记录在案。
在编写了元之后,您可以使用ocamlfind install子命令,它有一个-destdir选项。
但是ocamlfind不处理可执行文件,只处理库。所以这可能不适合你。
发布于 2015-06-03 12:12:57
进入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。
也许有人可以给出这个选项,我觉得很有趣,但是在用户手册中没有。因此,一个解决方案是使用脚本。
https://stackoverflow.com/questions/30619162
复制相似问题