告诉 ocamlbuild 在哪里可以找到模块
Tell ocamlbuild where to find module
我有一个 OCaml 项目,我使用 ocamlbuild
。
在这个项目中,我有两个子项目,subproject1
和 subproject2
。
subproject2
需要使用 subproject1
中名为 Module
的模块。
综上所述,我有以下结构:
project/
|
|-- subproject1
| |
| |-- module.ml
|
|-- subproject2
|
|-- main.ml
如果 module.ml
位于 subproject2
中,在 main.ml
旁边,我会简单地使用 subproject2/main.ml
中的 open
指令:
(*subproject2/main.ml *)
open Module
但是由于 module.ml
位于 subproject1
,我如何告诉 ocamlbuild
打开 subproject1/module.ml
?
虽然我还没有找到任何直接包含或直接 link 源文件的方法,但我想出了一种有效包含同级目录中的模块的方法。
再一次,这里是项目的结构:
project/
|
|-- subproject1
| |
| |-- module.ml
|
|-- subproject2
|
|-- main.ml
从 project
目录,以下 ocamlbuild
命令将编译整个项目,以 subproject2/main.ml
作为目标,subproject2/_build/
作为输出构建目录:
ocamlbuild -I subproject1 subproject2/_build/ subproject2/main.byte
然而,预期的 main.byte
文件将输出为 subproject2/_build/subproject2/main.byte
,因此需要手动 link 编辑以最终得到通常的 main.byte
symlink 在 subproject2
.
因为我喜欢可以使用make
,所以我在subproject2/
中写了下面的Makefile
,以便通过运行编译subproject2/
make
从内部看,因为 make
应该有效。
all:
# Move to project/
cd ..;\
# Run the ocamlbuild command
ocamlbuild -I subproject1 subproject2/_build/ subproject2/main.byte\
# Go back into subproject2
cd subproject2;\
# Try to remove the existing symlink, mute stderr, and continue on error
rm main.byte 2> /dev/null || true;\
# Create the desired symlink
ln -s _build/subproject2/main.byte main.byte
我有一个 OCaml 项目,我使用 ocamlbuild
。
在这个项目中,我有两个子项目,subproject1
和 subproject2
。
subproject2
需要使用 subproject1
中名为 Module
的模块。
综上所述,我有以下结构:
project/
|
|-- subproject1
| |
| |-- module.ml
|
|-- subproject2
|
|-- main.ml
如果 module.ml
位于 subproject2
中,在 main.ml
旁边,我会简单地使用 subproject2/main.ml
中的 open
指令:
(*subproject2/main.ml *)
open Module
但是由于 module.ml
位于 subproject1
,我如何告诉 ocamlbuild
打开 subproject1/module.ml
?
虽然我还没有找到任何直接包含或直接 link 源文件的方法,但我想出了一种有效包含同级目录中的模块的方法。
再一次,这里是项目的结构:
project/
|
|-- subproject1
| |
| |-- module.ml
|
|-- subproject2
|
|-- main.ml
从 project
目录,以下 ocamlbuild
命令将编译整个项目,以 subproject2/main.ml
作为目标,subproject2/_build/
作为输出构建目录:
ocamlbuild -I subproject1 subproject2/_build/ subproject2/main.byte
然而,预期的 main.byte
文件将输出为 subproject2/_build/subproject2/main.byte
,因此需要手动 link 编辑以最终得到通常的 main.byte
symlink 在 subproject2
.
因为我喜欢可以使用make
,所以我在subproject2/
中写了下面的Makefile
,以便通过运行编译subproject2/
make
从内部看,因为 make
应该有效。
all:
# Move to project/
cd ..;\
# Run the ocamlbuild command
ocamlbuild -I subproject1 subproject2/_build/ subproject2/main.byte\
# Go back into subproject2
cd subproject2;\
# Try to remove the existing symlink, mute stderr, and continue on error
rm main.byte 2> /dev/null || true;\
# Create the desired symlink
ln -s _build/subproject2/main.byte main.byte