Problemas con mi Makefile
Frecuentes
Visto 169 equipos
0
He descargado así Makefile
y me cuesta entender cómo funciona.
Estoy programando en Ocaml
y para algún módulo, implementé un interface
(.mli). Extrañamente, incluso cuando agrego el .mli
presentar ante el correspondiente .ml
archivo, Makefile parece omitirlo; así que estoy recibiendo el error
could not find the X.cmi for the module X.
Peor aún, agregué un archivo sin el requerido .mli
y extrañamente nuevamente el Makefile los agregó automáticamente a la lista de fuentes.
estoy diciendo extrañamente pero tal vez sea perfectamente normal para un experto en Makefiles.
No soy un experto en lo que respecta a Makefile, ¿alguien puede ayudarme a comprender cómo funciona este Makefile?
La compilación funciona bien, cuando reemplazo la línea
$(EXEC): $(OBJS)
$(CAMLC) $(CUSTOM) -o $(EXEC) $(LIBS) $(OBJS)
¡Con
$(EXEC): $(SOURCES)
$(CAMLC) $(CUSTOM) -o $(EXEC) $(LIBS) $(SOURCES)
y agregue el .mli requerido
1 Respuestas
0
Intente
# 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
Deberá configurar PRG, ML, MLI, FLAGS, LD. :)
Respondido 31 Jul 12, 15:07
Probaré tu solución y te informaré, ¡gracias! ;) - jose elcid
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas makefile or haz tu propia pregunta.
Esto puede tomar algunas iteraciones. ¿Qué pasa cuando tú
make X.cmi
? - BetaX.cmi no existe en ese momento, cuando compilo X.ml por separado con ocamlc y hago, la compilación es exitosa. X.cmi es el resultado de
ocamlc -c X.mli
- Joseph ElcidExactamente; Cuando usted
make X.cmi
, le estás diciendo a Make que construyaX.cmi
. Haz ver queX.cmi
no existe, entonces busca una regla para construirlo, ve queX.mli
está presente y se ejecutaocamlc -c X.mli
. (Eso es lo que tienes suceder.) - Beta