0

これ をダウンロードしまし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 を追加します

4

1 に答える 1

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 をセットアップする必要があります。:)

于 2012-07-31T14:05:55.470 に答える