首页 文章

OCaml Makefile:没有规则来制作目标

提问于
浏览
2

我正在关注这个OCamlbuild example,因此创建了下面的Makefile:

OCB_FLAGS = -use-ocamlfind -I src -I lib
OCB = ocamlbuild $(OCB_FLAGS)

check: ocamlfind query core async
clean: $(OCB) -clean
byte: $(OCB) main.byte
native: $(OCB) main.native

.PHONY: check clean byte native

根目录包含两个子目录,src和lib . src子目录包含文件main.ml.

当我执行任何目标时,例如 make cleanmake byte 等,我收到错误信息:

make:***没有规则可以通过'check'来制作目标'ocamlfind' . 停止 .

要么

make:***没有规则来制作目标'ocamlbuild','byte'需要 . 停止 .

我很感激帮助理解这个错误的原因和解决方法 . 谢谢 .

1 回答

  • 3

    这一行:

    clean: $(OCB) -clean
    

    表示 clean 有两个依赖项, $(OCB)-clean . 所以它首先尝试构建 ocamlbuild .

    你想要这个,就像链接的makefile一样:

    clean:
            $(OCB) -clean
    

    这意味着 clean 没有依赖关系,并且通过运行 $(OCB) -clean 是"done" .

    请注意,在 $ 字符之前需要一个实际的制表符,而不是8个空格 .

相关问题