Makefile: DEBUGFLAGS= -DDEBUG_A Datei: #ifdef DEBUG_A test = 6; #else test = 9; #endif So Leute ich habe ein kleines Problem. Ich habe im Makefile DEBUG_A definiert. In meinem Program will ich je nach dem ob das Define da ist oder nicht die Variable test verändern. Leider ist, egal ob DEBUGFLAGS= -DDEBUG_A da ist oder nicht, test immer 9. habt ihr ne Idee waran das liegen könnte?
Wertet denn irgendwas DEBUGFLAGS aus? Steht das in Deinem makefile noch an irgendner anderen Stelle?
Du teilst deinem Compiler im makefile die DEBUGFLAGS auch korrekt mit? Stell im Zweifel mal dein makefile hier rein.
IchHeuleGleich schrieb: > habt ihr ne Idee waran das liegen könnte? DEBUGFLAGS wird nicht an den Compiler gegeben... Wie sieht die Kommandozeile des Compileraufrufs aus?
Problem gelöst. ich habe das define einfach in die Datei verschoben. Trotzdem Danke
IchHeuleGleich schrieb: > Problem gelöst. > > ich habe das define einfach in die Datei verschoben. > > Trotzdem Danke Naja. Ich wäre damit nicht zufrieden.
Ein Problem ist erst dann tatsächlich 'gelöst', wenn du exakt und genau verstehst, wie es entstanden ist. Vorher ist es nur ein 'aus den Augen, aus dem Sinn'. Und genau das ist eines der generellen Probleme unserer Zeit: Wir lösen Probleme nicht mehr, wir sorgen nur dafür, dass sie keiner mehr sieht. Wir fragen uns nicht, wie wir unsere Müllberge grundsätzlich wegkriegen sondern wir türmen den Müll zu Bergen auf und schütten Erde drüber. Bis sich dann in 20 Jahren zeigt, dass sich dadurch alles nur noch verschlimmert hat und eine Sanierung 100 mal so viel kostet, als wie wenn man gleich eine bessere Lösung als simples Verstecken angestrebt hätte.
IchHeuleGleich schrieb: > Problem gelöst. > > ich habe das define einfach in die Datei verschoben. > > Trotzdem Danke Das ist doch blöd. Der Sinn ist doch daß du das einmal in makefile definierst (oder beim make Aufruf sogar mitgibst und das dann in allen h und c files wirkt. So musst du es mindestens in einem zentralen H file definieren und dann aber sicherstellen daß dieses h file in allen anderen c und h files am Anfang includiert ist. Du hättest einfach im make file beim compiler aufruf die DEBUGFLAGS mit übergeben müssen.
Karl Heinz Buchegger schrieb: > Bis sich dann in 20 Jahren zeigt, dass sich dadurch alles nur noch > verschlimmert hat und eine Sanierung 100 mal so viel kostet, Hundertmal? Du bringst mich auf eine Idee: ich melde mal schon ein Gewerbe als Müllkippensanierer an. Denn schon an der Aufschüttung konnte man sich da schnell eine goldenen Nase verdienen... @ IchHeuleGleich Ich denke auch, dass dich dieser Workaround nochmal einholt. Und das dauert weniger als 20 Jahre...
Das Prob ist immer die Zeit. So kann ich jetzt weiterarbeiten. Wenn das Problem das nächjste mal auftritt muss ich es lösen. Für Vorschläge zur Lösung wäre ich trotzdem dankbar.
... wie schon geschrieben wurde, poste doch mal das Makefile! Alles andere wäre pure Spekulation.
IchHeuleGleich schrieb: > Für Vorschläge zur Lösung wäre ich trotzdem dankbar. Sag mal willst du uns verarschen? Was glaubst du ist das? Udo Schmitt schrieb: > Du hättest einfach im make file beim compiler aufruf die DEBUGFLAGS mit > übergeben müssen.
IchHeuleGleich schrieb: > Das Prob ist immer die Zeit. So kann ich jetzt weiterarbeiten. Wenn das > Problem das nächjste mal auftritt muss ich es lösen. > Für Vorschläge zur Lösung wäre ich trotzdem dankbar. Du musst noch viel lernen :-) Jedes Problem, das du ungelöst vor dir herschiebst, kostet dich auf lange Sicht gesehen mehr Zeit, als wie wenn du dich gleich um eine Lösung bemühst. Irgendwann sieht das jeder ein, das die 'Ich hab zwar keine Ahnung warum aber solange es jetzt funktioniert ist es gut' Strategie keine gute Strategie ist. Alles schon hundertemale passiert. Und noch jedes einzelne mal war es so, dass ich mir hinterher gewünscht hätte, ich hätte das Problem gleich richtig gelöst, anstatt nur ein 'Heftpflaster' draufzukleben. > Das Prob ist immer die Zeit. Da hast du recht. Aber anders als du denkst. Noch dazu, wo man bei deinem Problem höchst wahrscheinlich mit einem Blick ins Makefile das Problem in weniger als 2 Minuten lösen könnte.
@ Udo: wenn du mit deinem Leben unzufrieden bist. Lass es bitte nicht an mir aus: Makefile: DEBUGFLAGS= -DDEBUG_A @Karl Heinz Buchegger: makefile kommt heute abend. habe es auf einem anderen Rechner.
IchHeuleGleich schrieb: > wenn du mit deinem Leben unzufrieden bist. Lass es bitte nicht an mir > aus: > > Makefile: > DEBUGFLAGS= -DDEBUG_A Das kann nicht das komplette Makefile sein. Ausserdem ist es an dieser Stelle (noch) uninteressant, was du da konkret hingeschrieben hast. Entscheidend ist: Wo wird DEBUGFLAGS verwendet! Wird das überhaupt beim Compileraufruf mitgegeben? Derartige Variablen kannst du im Makefile haben so viele du willst. So lange sie beim tatsächlichen Build dann nicht verwendet werden, ist das alles Schall und Rauch.
IchHeuleGleich schrieb: > @Karl Heinz Buchegger: > > > > makefile kommt heute abend. habe es auf einem anderen Rechner.
IchHeuleGleich schrieb: > @ Udo: > > wenn du mit deinem Leben unzufrieden bist. Lass es bitte nicht an mir > aus: Er ist nicht mit seinem Leben, sondern mit deiner Antwort unzufrieden. Du fragst nach einer Lösung, obwohl diese gerade davor schon genannt wurde. Um's nochmal ausführlich zu erklären: Du kannst natürlich in deinem Makefile eine Variable DEBUGFLAGS definieren und da irgendwas reinschreiben. Dann liegt die da erstmal so rum. Dem Compiler ist das allerdings völlig wurscht. Der sieht diese Variable nicht mal. Du kannst sie genausogut HURRZ nennen und "Blubblub" reinschreiben, das hat den selben Effekt. Wenn die Variable auch eine Auswirkung haben soll, muß erstmal irgendwas damit getan werden. In diesem Fall müßtest du im Makefile dort, wo der Compiler aufgerufen wird, den Inhalt der Variable an diesen übergeben.
Rolf Magnus schrieb: > Dem Compiler ist das allerdings völlig wurscht. Der sieht diese > Variable nicht mal. Aus diesem Grund fragte ich schon im Beitrag "Re: ifdef unklar" nach der Compiler-Kommandozeile. Die sieht man meistens in der Konsole der aufrufenden IDE. Oder im Logfile...
Um es für unseren TE mal auf Programmiersprach-Niveau umzumünzen: Das, was du da gerade machst, ist ungefähr so, als würdest du in deinem C-Programm eine Variable definieren:
1 | const char message[] = "Das ist alles Mist hier!"; |
und dann erwarten, dass ebendiese Mitteilung beim Start des Programms auf ganz magische Weise von allein auf das LCD ausgeschrieben wird, nur weil die Variable doch schließlich "message" heißt.
IchHeuleGleich schrieb: > makefile kommt heute abend. habe es auf einem anderen Rechner. Tja, dann ist jetzt ja alles klar, seid (seid gestern) das Makefile "da" ist. Kann nicht funktionieren, ist leer!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.