我下载了this Makefile
,我很难理解它是如何运作的。
我在Ocaml
编程,对于某些模块,我实现了interface
(。mli)。奇怪的是,即使我在相应的.mli
文件之前添加.ml
文件,Makefile似乎也会跳过它;所以我收到了错误
could not find the X.cmi for the module X.
更糟糕的是,我添加了一些没有必需.mli
的文件,奇怪的是,Makefile会自动将它们添加到源列表中。
我说的是奇怪的,但也许这对Makefiles专家来说非常正常。
对于Makefile,我不是专家,任何人都可以帮我理解这个Makefile的工作原理吗?
当我替换行
时,编译工作正常$(EXEC): $(OBJS)
$(CAMLC) $(CUSTOM) -o $(EXEC) $(LIBS) $(OBJS)
使用
$(EXEC): $(SOURCES)
$(CAMLC) $(CUSTOM) -o $(EXEC) $(LIBS) $(SOURCES)
并添加所需的.mli
答案 0 :(得分:0)
尝试
# Makefile
PRG =
# Fichiers dans l'ordre
ML =
MLI =
CMO=${ML:.ml=.cmo}
CMX=${ML:.ml=.cmx}
CMI=${ML:.mli=.cmi}
OCAMLFLAGS = -I
OCAMLLD = -ccopt -L.
OCAMLOPT = ocamlopt.opt
OCAMLC = ocamlc.opt
OCAMLDEP = ocamldep
${PRG}: ${OCAMLOPT} ${OCAMLFLAGS} ${OCAMLLD} -o $@ ${CMX}
make clean
.SUFFIXES: .ml .mli .cmo .cmx .cmi
.ml.cmx:
${OCAMLOPT} ${OCAMLFLAGS} ${OCAMLLD} -c $<
.ml.cmo:
${OCAMLC} -c $<
.mli.cmi:
${OCAMLC} -c $<
clean:
rm -f *~ *.o *.cm? *mli
fullclean: clean
rm -f .depend ${PRG}
depend: .depend
.depend: ${ML} ${MLI}
rm -f .depend
${OCAMLDEP} ${ML} ${MLI} > .depend
include .depend
你必须设置PRG,ML,MLI,FLAGS,LD。 :)