Forum: Compiler & IDEs [avr-gcc] Was macht "CFLAGS += -Wa,-adhlns=$(<:.c=.lst) "?


von Markus B. (markus_b77)


Lesenswert?

Hi, ich bastle gerade ein wenig an Anjuta und versuche, dass Makefile 
dafür anzupassen. Ich habe aber ein Problem mit der Zeile


  CFLAGS += -Wa,-adhlns=$(<:.c=.lst)

Genauer gesagt mit dem Teil ab dem Komma. Sobald ich den Teil im 
Makefile habe spuckt Anjuta beim Laden eine Meldung aus, dass Projekt 
sei falsch gebaut oder sowas ähnliches.

Was macht der Teil genau und kann man das eventuell umschreiben?

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

-Wa ist eine Compileroption, die das, was nach dem , steht, an den 
Assembler weiterreicht. Das $ ist make-Magie, was zu Problemen führt, 
wenn der Compiler mit nicht-C Dateien gefüttert wird (*.S, *.cpp, *.sx, 
*.c++, *.C, ...)

von Oliver (Gast)


Lesenswert?


von Andreas B. (andreas_b77)


Lesenswert?

Die automatische Variable $< ist in make mit der ersten Abhängigkeit der 
aktuellen Build Rule belegt, das ist generell die Quelldatei.

Dann gibt es noch Substitutionen der Form $(var:.x=.y), das nimmt die 
Variable var und ersetzt die Endung .x durch .y.

In der verwendeten Kombination wird also der Name der Quelldatei 
genommen und die Endung .c durch .lst ersetzt. Soweit zum Makefile, was 
ist das Problem denn genau?

von Markus B. (markus_b77)


Lesenswert?

Andreas B. schrieb:
> was ist das Problem denn genau?

Das kann ich leider nicht genau sagen. Ich versuche mich gerade daran, 
für Anjuta einen Project Wizard für den avr-gcc zu basteln. Aber sobald 
ich diese Zeile einbaue spuckt er einen Fehler aus, wenn das Projekt 
geladen wird. Aber die einzige Aussage der Fehlermeldung ist

"Falsch gebautes Projekt"

Auch die Konsole spuckt nicht mehr Informationen aus.

Anjuta verwendet an der Stelle Autogen. Ein Makefile Template wird mit 
Autogen bearbeitet. Eventuell stört sich Autogen an einer Zeichenfolge, 
die Autogen selbst verwendet.

von (prx) A. K. (prx)


Lesenswert?

Bisschen Vorsicht mit solchen Ersetzungen. Wenn die Zeile mal irgendwo 
auftaucht, wo es nicht exakt .c heisst, dann wird nichts ersetzt und das 
Listing bügelt den Quellcode weg.

Weniger riskant ist es, wenn man bei solchen Ersetzungen vom Zielfile 
statt vom Quellfile ausgeht.

von Markus B. (markus_b77)


Lesenswert?

Ok, Frage: kann man das umschreiben oder ganz weglassen? Das stammt aus 
dem Standard Makefile hier aus dem GCC Tutorial. Bisher hat es immer 
funktioniert.

Hat jemand vielleicht ein einfacheres Makefile, welches ich als Basis 
verwenden kann? Bin leider kein Make Experte

von Rolf Magnus (Gast)


Lesenswert?

Markus B. schrieb:
> Ok, Frage: kann man das umschreiben oder ganz weglassen?

Wenn du es weglässt, wird das .lst-File nicht mehr generiert. Wenn dich 
das nicht weiter stört, lass es weg.

von Markus B. (markus_b77)


Lesenswert?

Rolf Magnus schrieb:
> Wenn du es weglässt, wird das .lst-File nicht mehr generiert. Wenn dich
> das nicht weiter stört, lass es weg.

Achso, würde mich im Moment nicht stören. Danke

von Markus B. (markus_b77)


Lesenswert?

Hier mal das erste Ergebnis meines Gebastels

http://www.elektronik-projekt.de/thread.php?threadid=6888

Die fragliche Zeile hab ich noch weg gelassen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.