我希望在存储库的根目录下使用Makefile编译我的OCaml代码,此代码位于另一个名为step1
的存储库中。但由于某种原因,通过简单地添加源路径,编译不再起作用了吗?
这是我的Makefile:
DIR = step1
SRC = $(DIR)/door.ml\
$(DIR)/tile.ml\
$(DIR)/maze.ml\
$(DIR)/display.ml\
$(DIR)/main.ml
OCAMLFLAGS = -w Aelz -warn-error A -g
all: step1 step1.byte
step1: step1.native
cp $< $@
step1.byte: $(SRC)
ocamlc $(OCAMLFLAGS) $^ -o $@
step1.native: $(SRC)
ocamlopt $(OCAMLFLAGS) $^ -o $@
clean:
$(RM) *.cmo *.cmi *.o *.cmx
fclean: clean
$(RM) step1 step1.byte step1.native step2 step2.native step2.byte step3 step3.native step3.byte step4 step4.byte step4.native step5 step5.byte step5.native
re: fclean all
.PHONY: all clean fclean re
我得到的错误信息如下:
ocamlopt -w Aelz -warn-error A -g step1/door.ml step1/tile.ml step1/maze.ml step1/display.ml step1/main.ml -o step1.native
File "step1/tile.ml", line 1, characters 0-9:
Error: Unbound module Door
Makefile:30: recipe for target 'step1.native' failed
make: *** [step1.native] Error 2
我必须使用ocamlc和ocamlopt进行编译,并且可执行文件必须位于存储库的根目录中。
我错过了什么?