Probleme mit gcc -MM im Makefile

Gast #1666841
Lesenswert?

Hallo Zusammen,

Ich habe hier ein komisches Phänomen das ich mir nicht erklären kann. In 
meinem Makefile steht folgende Zeile:


dep: $(COMMON_SRCS) $(SAM7_SRCS)
    $(CC) $(INC_FLAGS) -MM $^ > $@


Diese liefert mir auf der Eclipse-Console folgenden Output:


make ROOT_DIR=C:/RoboCar/testWorkspace/RoboCar dep
arm-elf-gcc -I. -I../common/include  -MM ../common/croutine.c 
../common/list.c ../common/queue.c ../common/tasks.c 
../common/portable/heap_1.c port.c portISR.c startup.c syscalls.c > dep
arm-elf-gcc.exe: no input files
make: *** [dep] Error 1


Wenn ich nun die Zeile in einem DOS Prompt ausführe:

arm-elf-gcc -I. -I../common/include  -MM ../common/croutine.c 
../common/list.c ../common/queue.c ../common/tasks.c 
../common/portable/heap_1.c port.c portISR.c startup.c syscalls.c > dep


bekomme ich in der Datei dep das richtige Ergebnis.


Dachte erst, es liegt an dem Umleitungsoperator, denn wenn ich die 
Umleitung weg lasse, so bekomme ich die Depencies in der Eclipse Console 
angezeigt. Aber der Aufruf

echo "Testoutput" > test.txt


im Makefile funktioniert. Nur der gcc Aufruf macht Probleme?


Übersehe ich etwas?
Ich bin für jeden Tip sehr dankbar!!!

Gruß
Andy
Gast #1667139
Lesenswert?

Das glaube ich nicht. Ich habe gerade versucht, den Make-Aufruf über das 
DOS Prompt aus dem richtigen Verzeichnis aus aufzurufen. Gleiches 
ergebnis. Und wie gesagt, wenn ich den gcc Befehl direkt ausführe, dann 
funktioniert alles nur im Makefile nicht.
#1667190
Lesenswert?

Andreas Schmidt schrieb:
> Das glaube ich nicht.

Das glaube ich doch. Das Makefile wechselt in ein anderes Verzeichnis, 
wahrscheinlich hat es mit der übergebenen ROOT_DIR Variable zu tun die 
auf C:/RoboCar/testWorkspace/RoboCar gesetzt wird.

Ändere einmal das Makefile auf

dep: $(COMMON_SRCS) $(SAM7_SRCS)
    dir
    $(CC) $(INC_FLAGS) -MM $^ > $@

dann wird das Verzeichnis gelistet und Du siehst wo du bist.
Gast #1667445
Lesenswert?

Das hatte ich auch schon probiert. Aber ich bekomme dann die 
Fehlermeldung, dass der Prozess dir nicht gefunden wurde.

Was mich aber verwundert ist, dass wenn ich die Umleitung in eine Datei 
des Aufrufs $(CC) -MM weglasse, dass dann der Aufruf korrekt ausgeführt 
wird und die Depencies auf der Konsole angezeigt werden.
Gast #1667452
Lesenswert?

@Jörg: Ich habe nur ein make installiert welches auch im Path ist. In 
dem Test-Projekt gibt es im gesamten Verzeichnisbaum nur ein Makefile.

Wenn ich die Konsolen-Ausgabe von dem Make Aufruf anschaue, dann wird 
(zumindest bei der Anzeige auf der Konsole) nichts abgeschnitten.

Ich habe so die Vermutung, dass es irgendetwas mit der Umleitung > $@ zu 
tun haben muss.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren