麻烦我的Makefile

时间:2012-07-31 13:59:12

标签: makefile

我下载了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

1 个答案:

答案 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。 :)