PDA

Afficher la version complète : [Réglé] Créer un makefile



guigui
30/05/2010, 09h21
Bonjour, comment fait-on pour pouvoir compiler son code sans utiliser d'IDE avec des bibliothèques tierces comme la SDL ? Car je n'ai pas trop envi d'utiliser un IDE, un traitement texte brut comme gedit me suffit wink.gif
Pour l'instant je code sous windows, mais bon plus d'une heure pour installer une bibliothèque et la configurer dans l'IDE wacko.gif , pouah, vive windows... je comprend maintenant pourquoi qu'on dit que linux est un systeme de programmeur, c'est pas parce que c'est compliqué, mais parce qu'on évite de perdre un temps fou pour programmer smile.gif

Je suppose qu'il faut créer un makefile :rolleyes:

Merci de vos réponses ;)

j'ai installé les bibliothèques avec le gestionnaire de paquet

j'ai recrée un sujet car je pense finalement que ma question n'avait pas sa place à la suite de ma première question, libre à vous de supprimer le message de l'autre sujet ;)

genome
30/05/2010, 10h48
Salut,

Pour compiler sans IDE, tu as 3 possibilités : soit lancer les commandes à la main (en général quand tu as un seul fichier source, sinon c'est vite relou), soit les regrouper dans un makefile (idéal pour un petit projet), ou alors utiliser autoconf/automake (le must, mais un peu "usine à gaz").

Je te conseille ce tuto (http://gl.developpez.com/tutoriel/outil/makefile/) pour apprendre les makefiles.

Concernant les options de compil spécifiques à SDL, ajoute simplement `sdl-config --cflags` dans les options de compilation et `sdl-config --libs` dans les options de linkage.

Voici un exemple de makefile partiellement automatisé que j'ai créé pour un générateur d'images fractales écrit en C avec SDL :<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'># -*- coding: utf-8 -*-

# MAKEFILE for "Mandelbrot" -------------------------------------------------

EXEC=mandelbrot
CC=gcc
CFLAGS=-Wall -Werror -std=c99 -pedantic -pipe -fomit-frame-pointer -ffast-math
SDL_CFLAGS=`sdl-config --cflags`
SDL_LFLAGS=`sdl-config --libs`
SRC=$(wildcard *.c)
OBJ=$(SRC:.c=.o)


#------------------------------------------------------------------------------

all: $(EXEC)


#------------------------------------------------------------------------------

$(EXEC): $(OBJ)
$(CC) $(CFLAGS) $(SDL_LFLAGS) -o $@ $^

%.o: %.c
$(CC) $(CFLAGS) $(SDL_CFLAGS) -o $@ -c $<


#------------------------------------------------------------------------------

clean:
@rm -v *.o

mrproper: clean
@rm -v $(EXEC)


# END -----------------------------------------------------------------------

</div>

Ce makefile compile tous les *.c du répertoire courant en *.o, et génère l'exécutable "mandelbrot" à partir de tous les *.o.


N'hésite pas si tu as des questions ;)

guigui
30/05/2010, 11h49
Merci genome ;)

<div class='quotetop'>Citation </div>
ou alors utiliser autoconf/automake (le must, mais un peu "usine à gaz").[/b]

Je pense que de toute façon, n'importe quelle manière de compiler sera moins "usine à gaz" que sous windows <_<

Je m'en vais regarder le tuto du makefile de ce pas :)