Erstens - ich weiß, dass es viele ähnliche Diskussionen gibt, aber ich habe Stunden damit verbracht, ohne dass sie für mich arbeiten.GNU make im neu erstellten Unterverzeichnis
Meine Makefile erstellt zuerst ein Verzeichnis mit dem aktuellen Datum und Uhrzeit benannt. Ich habe dann das Makefile an eine Header-Datei eine Zeile anhängen, die eine Zeichenfolge mit diesem Verzeichnisnamen erstellt. Aus diesem Grund muss ich zunächst alle Quelldateien (einschließlich des Headers) in das neu erstellte Unterverzeichnis kopieren, damit ich den ursprünglichen Header beibehalten und nur den Header (im Unterverzeichnis) ändern kann, der für die Kompilierung verwendet wird. Ich möchte dann dieses neue Verzeichnis einbauen.
Mein Problem wird gemacht, um die .o
Dateien im neuen Unterverzeichnis richtig zu erstellen. Die Lösung, die ich gefunden habe, ist
$(NOW)%.o: $(NOW)%.cpp $(CC) -c $(FLAGS) $<
haben, wo $(NOW)$
das Unterverzeichnis Name ist. Das Problem ist, dass meine $(FLAGS)
scheinen ignoriert zu werden: die Ausgabe ist, grob
g++ -c -o <.o file> <.cpp file>
(Ja, es gibt tatsächlich mehr Platz eingeführt zwischen g++
und -c
.) In der obersten Ebene a la Gebäude
%.o: %.cpp $(CC) -c $(FLAGS) $<
korrekt ausgibt
g++ -c <my flags> -o <.o file> <.cpp file>
Zusammenfassend kann ich nicht normal kompilieren, indem ich die Quelldateien in ein neu erstelltes Unterverzeichnis verschiebe und die .o
Dateien in diesem Verzeichnis erstelle. TYIA.
Geben Sie die Zeile ein, in der '$ (FLAGS)' gesetzt ist. Wenn es sich um eine zielspezifische Variable handelt, könnte dies zu dem von Ihnen beschriebenen Problem führen. Wenn es mit ': =' gesetzt wird und _below_ das '$ (NOW)%. O' Ziel ist, wird sein Wert in dieser Regel nicht wirksam. Ein vollständigeres Makefile würde definitiv helfen, das Problem zu diagnostizieren. – blackghost