My favorites | Sign in
Project Home Downloads Wiki Issues Source
READ-ONLY: This project has been archived. For more information see this post.
Search
for
Makefile  
Exemple de Makefile
Updated Jul 19, 2007 by samuel.r...@gmail.com
# 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
Powered by Google Project Hosting