|
Makefile
Exemple de Makefile
# Les différentes cibles du projet # TODO : # - ajouter les themes edje # - ajouter la gestion des modules EXE=ego LIB=libego.so LIB_VER=0 # les différents répertoires où l'on trouve les sources # Commenter les répertoires inutilsés # TODO : # - ajouter les themes edje # - ajouter la gestion des modules BIN_DIR=./src/bin LIB_DIR=./src/lib # Utilisation de la fonction wildcard pour constituer les listes # des différents fichiers sources # A commenter si on utilise pas cette organisation des répertoires # TODO : ajouter les themes edje BIN_SRC=$(wildcard src/bin/*.c) BIN_HDR=$(wildcard src/bin/*.h) LIB_SRC=$(wildcard src/lib/*.c) LIB_HDR=$(wildcard src/lib/*.h) # Constitution des listes des fichiers objets à partir de la liste des sources # exemple : src/bin/main.c devient src/bin/main.o BIN_OBJ=$(BIN_SRC:.c=.o) LIB_OBJ=$(LIB_SRC:.c=.o) # Options de compilation : # - Compilateur CC=gcc # - Option de compilation des sources de l'executable BIN_CFLAGS=-Wall -I$(LIB_DIR) `pkg-config --cflags ecore ecore-evas evas` # - Options d'edition des liens de l'executable BIN_LDFLAGS=-L. -Wl,-rpath,. -lego `pkg-config --libs ecore ecore-evas evas` # - Options de compilation des sources de la bibliotheque LIB_CFLAGS=-Wall -fPIC `pkg-config --cflags ecore ecore-evas evas edje` # - Option d'edition des liens de la bibliotheque LIB_LDFLAGS=-shared -Wl,-soname,$(LIB).$(LIB_VER) `pkg-config --cflags ecore ecore-evas evas edje` # Cible(s) par defaut all: $(EXE) $(LIB) # Regles et dependance de l'executable # Edition des liens de toutes les dépendances pour construire l'executable $(EXE): $(BIN_OBJ) $(LIB) $(CC) $^ -o $@ $(BIN_LDFLAGS) # Regles et dependance des fichiers objets construit a partir des sources # On compile les .c un par un # On utilise la fonction patsubst pour remplacer l'extension .o de la cible # par .c $(BIN_OBJ): $(BIN_SRC) $(BIN_HDR) $(CC) -o $@ -c $(patsubst %.o,%.c,$@) $(BIN_CFLAGS) # Regles et dependances de la biblitheque partagee # Edition des liens de toutes les dépendances pour construire la biblotheque # Creation d'un lien symbolique contenant le numero de version $(LIB): $(LIB_OBJ) $(CC) $^ -o $@ $(LIB_LDFLAGS) ln -s $(LIB) $(LIB).$(LIB_VER) # Idem cible $(BIN_OBJ) $(LIB_OBJ): $(LIB_SRC) $(LIB_HDR) $(CC) -o $@ -c $(patsubst %.o,%.c,$@) $(LIB_CFLAGS) # Suppression de tous les fichiers intermediaires produits pendant la # construction du projet clean: rm -rf $(BIN_OBJ) $(LIB_OBJ) # Suppression de tous les fichiers produits pendant la construction du projet distclean: clean rm -rf $(EXE) $(LIB) $(LIB).$(LIB_VER) # TODO : ajouter une cible install en utilisant une variable PREFIX |