Ich versuche ein Makefile zu machen, sogar hart kann ich ein einfaches Makefile machen, ich kann es nicht funktionieren, wenn ich die Dateien in verschiedenen Ordnern sortieren muss, was ich needs is/translator Ordner mit: Makefile, src Ordner mit allen .c und .h Dateien, Dateien Ordner mit den zu übersetzenden Dateien und bin Ordner für alle .o Dateien und die ausführbare Datei.Makefile in C - keine Regel um Ziel zu machen
Dies ist die Make-Datei ich gemacht:
CC = gcc
CFLAGS = -Wall -Werror -Wextra -pedantic -std=c99 -g
OBJECTS = word.o pair.o list.o dict.o set.o
translate : $(OBJECTS)
mkdir ./files
mkdir ./bin
cd ./src; $(CC) $(CFLAGS) -o translate $(OBJECTS) main.c; mv *.o ../bin; mv translate ../bin
word.o: word.c word.h
cd ./src; $(CC) $(CFLAGS) -c word.c -o word.o
pair.o: pair.c pair.h word.h
cd ./src; $(CC) $(CFLAGS) -c pair.c -o pair.o
list.o: list.c list.h word.h pair.h
cd ./src; $(CC) $(CFLAGS) -c list.c -o list.o
dict.o: dict.c dict.h word.h list.h
cd ./src; $(CC) $(CFLAGS) -c dict.c -o dict.o
set.o: set.c set.h word.h list.h
cd ./src; $(CC) $(CFLAGS) -c set.c -o set.o
.PHONY : clean
clean :
$(RM) ./bin/*.*
rmdir ./bin
Aber sobald ich make
die Terminal zeigt ein:
make: *** No rule to make target `word.c', needed by `word.o'. Stop.
Ich habe vorher ein Makefile für Java auf diese Weise, und es funktionierte und es gibt sicher eine Datei word.h und word.c innerhalb des src-Ordners, also warum findet sie es nicht?
ich habe das in Java, jetzt lese ich, dass der richtige Weg, &&, dies zu tun, ist, dass Sie den Befehl cd wissen war succesfull –
Auch nach cd Entfernen ./src findet es immer noch nicht die Zieldateien, um word.o zu machen, ich nehme an, ich bin standi ng in den falschen Ordner, aber wie sollte es sein? –