Ich habe mehrere Zeilen in Makefile, die .o
und .d
Dateien kompilieren und produzieren. Ich möchte zwei Sätze von .o
.d
produziert werden, so etwas wie:Benennen von O-Dateien mit Makefile und GCC
name.d
name_hello.d
name.o
name_hello.o
bereits gefunden, wie Namen von .d
ändern "$(@:.o=_hello.d)"
verwenden, aber haben keine wechselndem Erfolg .o Vielleicht muss ich mit [email protected]
spielen, aber haben keine Ahnung, wie es zu tun.
Hier Datei Code Hersteller:
$(OBJECT_DIRECTORY)/%.o: %.c
# Build header dependencies
$(CC) $(CFLAGS) $(INCLUDEPATHS) -M $< -MF "$(@:.o=.d)" -MT [email protected]
$(CC) $(CFLAGS) $(INCLUDEPATHS) -M $< -MF "$(@:.o=_hello.d)" -MT [email protected]
# Do the actual compilation
$(CC) $(CFLAGS) $(INCLUDEPATHS) -c -o [email protected] $<
$(CC) $(CFLAGS) $(INCLUDEPATHS) -c -o [email protected] $< - this line i want to change
Ich benutze arm-none-eabi-gcc.exe
für Arm und make.exe
aktualisieren
scheint, dass separates Ziel mit Lösung als wechselnde Namen preffered wird. Also habe ich das Ziel dafür getrennt. Aber es wird nie benutzt. An anderer Stelle des Makefiles gibt es nächste Codezeile, die verwenden Compiler welche .o
Dateien erzählt:
C_OBJECTS = $(addprefix $(OBJECT_DIRECTORY)/, $(C_SOURCE_FILENAMES:.c=.o))
nehme ich an, dass ich es zu etwas ändern muß, wie:
C_OBJECTS_hello = $(addprefix $(OBJECT_DIRECTORY)/, $(C_SOURCE_FILENAMES:.c=*_hello.o))
Bitte sagen, wie zu modifizieren C_OBJECTS
um Compiler Gebrauch zu machen *_hello.o
Dateien
Update 2
Dies ist, wie C_OBJECTS
verwendet, nehme ich an, irgendeine Art von Filter in C_OBJECTS
erzählt CC
(arm-none-eabi-gcc.exe
), bestimmte .o
Dateien zu verwenden. Und da *_hello.o
Dateien nicht im Filter verwendet werden, werden sie auch nicht in ihrem Ziel erzeugt.
## Link C and assembler objects to an .out file
$(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).out: $(BUILD_DIRECTORIES) $(C_OBJECTS) $(ASSEMBLER_OBJECTS) $(LIBRARIES)
$(CC) $(LDFLAGS) $(C_OBJECTS) $(ASSEMBLER_OBJECTS) $(LIBRARIES) -o $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).out
Ich weiß, dass dies in Make-Hilfe geschrieben und ich es lese, aber immer noch nicht in der Lage, eine Antwort zu finden
Update 3
Hier ist, wie ich ‚C_OBJECTS geändert ', und scheint das funktioniert:
C_OBJECTS_hello = $(addprefix $(OBJECT_DIRECTORY)/, $(C_SOURCE_FILENAMES:.c=_hello.o))
_aber haben keinen erfolg ändern '.o'_ - ändern es zu was? –
Mein Ziel ist es, sowohl * .o und * _hello.o Dateien zu haben. –
http://stackoverflow.com/a/7358961/412080 –