Bonjours tout le monde, j'ai un projet à réaliser en C (sur du traitement d'image). On nous à donné une archive contenant un main et un makefile et quelque .c mais le problème c'est que je galére a comprendre le makefile (je n'ai plus fait de C depuis belle lurette)...
De ce que j'ai compris on génère des mini makefile (.d) dans un sous dossier /obj.
Le problème que j'ai c'est que quand je compile, je prends cette erreur :
gcc -Wall -pedantic -std=c99 -o obj/utils.o -c utils.c
gcc: error: CreateProcess: No such file or directory
Makefile:28: recipe for target 'obj/utils.o' failed
mingw32-make: *** [obj/utils.o] Error 1
Forcement, les .o sont créée nulle part il me semble... Ma question est donc : qu’écrire dans le makefile pour créer ces .o au bon endroits?
Voici le code du makefile :
.PHONY:all tests
CC=gcc
CFLAGS=-Wall -pedantic -std=c99
# tous les fichier sources
sources=$(wildcard *.c)
# le nom des fichier .o
OBJ=$(sources:.c=.o)
DIR_OBJ=obj/
#le nom des fichiers .o avec le chemin en preffix
OBJS=$(addprefix $(DIR_OBJ), $(OBJ))
TARGET=imagefilter
all: $(TARGET)
clean:
@rm -f $(OBJS) *~ $(TARGETS) $(addprefix $(DIR_OBJ), $(sources:.c=.d))
# compile
$(DIR_OBJ)%.o: %.c
$(CC) $(CFLAGS) -o $@ -c $<
$(DIR_OBJ)%.d: %.c
echo “make $@“
@set -e; rm -f $@; \
$(CC) -M $(CFLAGS) $< > $@.$$$$; \
sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
rm -f $@.$$$$
echo:
echo $(sources)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) $^ -o $@ -lm
tests: $(TARGET)
./test_script.sh all
include $(addprefix $(DIR_OBJ), $(sources:.c=.d))
et une photo du répertoire ainsi que du code sous sublime:
En espérant que vous puissiez m'indiquer comment résoudre mon problème merci