Makefile
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
-
ContributeurSalut Mmh35,
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 suiteall : test3 ........
?-
ContributeurJe 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.
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
-