Un Makefile générique pour Caml Light

Le squelette de fichier pour la commande Make

Makefile_caml.tpl à copier sous le nom de Makefile dans le répertoire où réside votre programme.

Mode d'emploi simplifié

Plus précisément, ce fichier Makefile vous offre les «entrées» suivantes:

L'idéal est d'utiliser make avec l'éditeur emacs: on appelle make avec la commande emacs Meta-X compile. S'il se produit une erreur à la compilation, l'éditeur se positionnera automatiquement sur la ligne signalée par le compilateur Caml, en ouvrant le fichier correspondant Meta-X next-error. La commande Meta-X compile est généralement liée à la combinaison de touche CTRL-C CTRL-C, tandis que Meta-X next-error est lié à CTRL-X `.
Ce qui signifie qu'on recompile le programme et positionne le curseur sur l'erreur détectée en 4 appuis de touches.

Le Makefile suppose que le programme exécutable se nomme exc et qu'il est composé de:

# The Caml compilers. You may have to add various -I options.
CAMLC = camlc -W
CAMLDEP = camldep
CAMLLEX = camllex
CAMLYACC = camlyacc

# Name of executable file to generate
EXEC = exc

# Handling camllex files
LEXSOURCES = lexer.mll
LEXGENERATED = lexer.mli lexer.ml

# Handling camlyacc files
YACCSOURCES = parser.mly
YACCGENERATED = parser.mli parser.ml

# Files generated by camllex and camlyacc
GENERATED = $(LEXGENERATED) $(YACCGENERATED)

# The Caml sources to compile
SOURCES = types.mli types.ml main.ml $(GENERATED)

# The list of compiled files to link
OBJS = types.zo lexer.zo parser.zo main.zo

# This part should be generic
# Don't forget to create (touch) the file ./.depend at first use.

# Building the world
all: depend $(EXEC)

$(EXEC): $(GENERATED) $(OBJS)
        $(CAMLC) $(OBJS) -o $(EXEC) 

.SUFFIXES:
.SUFFIXES: .ml .mli .zo .zi .zix
.SUFFIXES: .mll .mly

.ml.zo:
        $(CAMLC) -c $<

.mli.zi:
        $(CAMLC) -c $<

.mll.ml:
        $(CAMLLEX) $<

.mly.ml:
        $(CAMLYACC) $<

# Clean up
clean:
        rm -f *.z[io] *.zix *~ .*~ #*#
        rm -f $(GENERATED)
        rm -f $(EXEC)

# Dependencies
depend: $(SOURCES) $(GENERATED) $(LEXSOURCES) $(YACCSOURCES)
        $(CAMLDEP) *.mli *.ml > .depend

include .depend


Page de présentation de Caml Dernière modification: vendredi 20 juillet 2001
Copyright © 1995 - 2004, INRIA tous droits réservés.

Contacter l'auteur Pierre.Weis@inria.fr