J'essaie d'utiliser un Makefile pour compiler quelques fichiers .c et quelques fichiers .h personnalisés pour créer un seul fichier exécutable. cependant lors de la compilation je reçois l'erreur que l'erreur "Aucun tel fichier ou répertoire".Erreur "aucun fichier ou répertoire" lors de la compilation avec Makefile
Voici mon Makefile, y a-t-il une faille dans la logique quant à la raison pour laquelle les fichiers d'en-tête sont oubliés lors de la compilation?
L'erreur se produit sur la ligne 21 de la compilation au cours de la règle $(BIN)main.o
.
C'est l'erreur de temps de compilation:
[email protected]:~/Desktop/Programs/CIS2520/root$ make
gcc -Wall -g -std=c99 -c -Iinclude -c ./src/main.c
./src/main.c:4:23: fatal error: structDefns: No such file or directory
#include "structDefns"
^
compilation terminated.
makefile:21: recipe for target 'bin/main.o' failed
make: *** [bin/main.o] Error 1
[email protected]:~/Desktop/Programs/CIS2520/root$
Voici le Makefile:
CC = gcc
CFLAGS = -Wall -g -std=c99 -Iinclude
BIN = ./bin/
SRC = ./src/
INC = ./include/
$(BIN)main: $(BIN)main.o $(BIN)book.o $(BIN)store.o $(BIN)boardGame.o
$(CC) -o $(BIN)main $(BIN)main.o $(BIN)book.o $(BIN)store.o
$(BIN)boardGame.o
$(BIN)book.o: $(SRC)book.c $(INC)structDefns.h $(INC)funcDefns.h
$(CC) $(CFLAGS) -c $(SRC)book.c
$(BIN)boardGame.o: $(SRC)boardGame.c $(INC)structDefns.h $(INC)funcDefns.h
$(CC) $(CFLAGS) -c $(SRC)boardGame.c
$(BIN)store.o: $(SRC)store.c $(INC)structDefns.h $(INC)funcDefns.h
$(CC) $(CFLAGS) -c $(SRC)store.c
$(BIN)main.o: $(SRC)main.c $(INC)structDefns.h $(INC)funcDefns.h
$(CC) $(CFLAGS) -c $(SRC)main.c
En ce qui concerne le répertoire des fichiers, le fichier makefile est en dehors de 3 dossiers, bin, src et comprendre. bin est l'endroit où je veux que l'objet et l'exécutable se rendent, src est l'emplacement des fichiers .c et les fichiers .h se trouvent dans le dossier include.
Nous ne pouvons pas vraiment dire sans voir tous vos fichiers et la structure du répertoire. Pour tout ce que nous savons, il peut s'agir d'une faute de frappe. – Evert
Il est également utile si vous affichez la commande de compilation complète + erreur. – Evert
Vous indiquez deux fichiers d'en-tête en tant que dépendances, mais je ne vois aucun indicateur dans la commande actuelle pour fournir un chemin d'accès afin que ces fichiers puissent être trouvés. C'est-à-dire que CFLAGS n'inclut pas -I $ (INC) ou similaire. – Evert