Makefile
Mmh35
-
[Dal] Messages postés 6373 Statut Contributeur -
[Dal] Messages postés 6373 Statut Contributeur -
Bonjour,
Je débute en C, et j'ai un petit problème avec mon make, il me met
Pas de règle pour fabriquer la cible "test2.c", necessaire pour "test2.o". Arret.
Voici mon fichier makefiles :
all : test2.o
gcc obj/test2.o -o bin/test2
test2.o : test2.c
gcc -c src/test2.c -o obj/test2.o
Comme vous l'aurez surement compris, j'ai 3 répertoires sous la racine du répertoire du makefiles et les différents fichiers doivent être stockés dedans...
J'ai bien mis la tabulation.
Seul le fichier ./src/test2.c existe.
<config>Debian</config>
Je débute en C, et j'ai un petit problème avec mon make, il me met
Pas de règle pour fabriquer la cible "test2.c", necessaire pour "test2.o". Arret.
Voici mon fichier makefiles :
all : test2.o
gcc obj/test2.o -o bin/test2
test2.o : test2.c
gcc -c src/test2.c -o obj/test2.o
Comme vous l'aurez surement compris, j'ai 3 répertoires sous la racine du répertoire du makefiles et les différents fichiers doivent être stockés dedans...
J'ai bien mis la tabulation.
Seul le fichier ./src/test2.c existe.
<config>Debian</config>
2 réponses
Salut Mmh35,
Si j'ai bien compris ce que tu veux faire, essaye comme cela :
Cela met le .o dans obj/, l'exécutable dans bin/, le fichier .c étant dans src/
Dal
Si j'ai bien compris ce que tu veux faire, essaye comme cela :
CFLAGS=-Wall -g
all: test2
test2.o:
gcc -o obj/test2.o -c src/test2.c
test2: test2.o
gcc -o bin/test2 obj/test2.o
Cela met le .o dans obj/, l'exécutable dans bin/, le fichier .c étant dans src/
Dal
Merci Dal
Et si je veux mettre plusieurs compilations dans le même makefile, je met à la suite
?
Et si je veux mettre plusieurs compilations dans le même makefile, je met à la suite
all : test3 ........
?
Je ne comprend pas bien ta question.
Si tu as plusieurs exécutables à créer, tu peux les mettre dans "all:", séparés par des espaces.
Il faudra que le Makefile gère les dépendances de la création de chacun des exécutables.
Pour éviter d'avoir à taper tous les noms de fichiers, tu peux utiliser des "pattern rules", ou utiliser des fonctions de substitution, pour dire, par exemple, au compilateur comment produire des fichiers .o à partir de tous les fichiers .c, et comment utiliser tous les fichiers .o pour produire un exécutable.
Vois la documentation de GNU Make et ses exemples:
http://www.gnu.org/savannah-checkouts/gnu/make/manual/html_node/Pattern-Examples.html#Pattern-Examples
http://www.gnu.org/savannah-checkouts/gnu/make/manual/html_node/Text-Functions.html#Text-Functions
Dal
Si tu as plusieurs exécutables à créer, tu peux les mettre dans "all:", séparés par des espaces.
all: test2 test3
Il faudra que le Makefile gère les dépendances de la création de chacun des exécutables.
Pour éviter d'avoir à taper tous les noms de fichiers, tu peux utiliser des "pattern rules", ou utiliser des fonctions de substitution, pour dire, par exemple, au compilateur comment produire des fichiers .o à partir de tous les fichiers .c, et comment utiliser tous les fichiers .o pour produire un exécutable.
Vois la documentation de GNU Make et ses exemples:
http://www.gnu.org/savannah-checkouts/gnu/make/manual/html_node/Pattern-Examples.html#Pattern-Examples
http://www.gnu.org/savannah-checkouts/gnu/make/manual/html_node/Text-Functions.html#Text-Functions
Dal