我可以使用ocamlbuild工具指定构建位置和文件名吗?我想能够说(伪代码):
ocamlbuild myapp.ml -b native -o bin/myapp
答案 0 :(得分:2)
没有这样的选项,但ocamlbuild
是可扩展的,并允许您使用Options.add
添加自己的选项。当然,您还需要添加一些实现。基本上,劫持native
的规则并使用安装过程扩展它可能会起作用。要扩展ocamlbuild
,您应该write一个插件(其他选项是创建自己的独立可执行文件,并使用它而不是ocamlbuild,这就是我们在project中所做的事情。 )。
但是对于大多数用途来说,使用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
仍然需要您编写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
。
也许有人可以提供这个选项,我发现这个选项很有趣但是在用户手册中却没有。所以一种解决方案是使用脚本。