Le voili, le voila...
Le Makefile, le truc qui doit être bien fait sinon ça part mal...
Il s'agit du script qui permet de compiler un projet, il contient toutes les informations nécessaires au compilateur pour rendre le projet "exécutable".
Il se met à la racine du projet. Parfois les fichiers .c sont dans la racine, parfois ils sont bien rangés dans un répertoire src/
J'ai mis exécutable car ce n'est pas parce qu'on a un exécutable que c'est forcement gagné... loin de là parfois :-)
Voici la description des différentes lignes d'un Makefile générique pour un code en C
CC = gcc # le nom du compilateur pour du C
# Nom de l'exécutable final
TARGET = MonApplication
# -Wall : active tous les avertissements
# -O2 : optimisation niveau 2 (le plus utilisé)
# -noixemul : n'utilise pas la bibliothèque ixemul.library (code plus natif), nécessaire pour les logiciels avec fenêtre
CFLAGS = -Wall -O2 -noixemul
# Fichiers sources (ajouter tous vos fichiers .c)
SRCS = src/fichier1.c \ #la barre en travers c'est pour dire qu'il y a encore des fichiers dessous
src/fichier2.c
# Génération automatique des noms de fichiers objets (.o)
OBJS = $(SRCS:.c=.o)
# Bibliothèques requises
# -lSDL2 bibliothèque SDL2 principale
# -lSDL2_mixer : bibliothèque SDL2 pour le son
LIBS = -lSDL2_mixer -lSDL2 # comme -lSDL2_mixer dépend de -lSDL2, il est placé avant
# Chemins d'inclusion pour les headers
# Peut varier selon votre installation
!!!!include!!!!S = -I/gg/user/local/!!!!include!!!! -I/gg/user/local/!!!!include!!!!/SDL2 #pour gérer à la fois les
et dans les codes.
# Règle par défaut (première cible = cible par défaut)
all: $(TARGET)
# Règle pour créer l'exécutable en liant les objets
$(TARGET): $(OBJS)
$(CC) -o $(OBJS) $(LIBS)
# Règle générique pour compiler les fichiers source en objets
%.o: %.c
$(CC) $(CFLAGS) $(!!!!include!!!!S) -c $< -o $@
# Nettoyage des fichiers objets et de l'exécutable en tapant Make clean
clean:
rm -f $(OBJS) $(TARGET)
# Indiquer que les cibles clean et rebuild ne correspondent pas à des fichiers
.PHONY: clean rebuild all
Pour du C++, il faudra remplacer les 'CC' par des 'CXX', les '.c' par des '.cpp', et le nom du compilateur de gcc en g++
Des compilateurs plus récents peuvent vous être demandé en fonction du code:
ppc-morphos-gcc-9 ou 11 à la place de gcc pour le C
ppc-morphos-g++-9 ou 11 à la place de g++ pour le C++
J'ai fait un petit mimetype qui doit être dans le pack qui permet de lancer l'exécution d'un Makefile en double-cliquant dessus.
Comme le mot !include! apparait mal dans le forum... L'idéal ça serait de reprendre un Makefile dispo dans un de mes projets et de le modifier.
A vous de 'jouer' pour porter un petit jeu, si vous avec des questions n'hésitez pas à me contacter sur papiosaur2 at hotmail.fr This message was edited by : Papiosaur / 2025-03-20 14:07
This message was edited by : Papiosaur / 2025-03-20 14:19