Hi, in meinem Sourcecode kann ich mittels verschiedener #define's verschiedene Firmware erzeugen. Zur Zeit setze ich das entsprechende #define und übersetze alles und bekomme dann das fertige .A43 File. Dieses benenne ich dann um und mach das gleiche mit den anderen #define's . Gibt es eine Möglichkeit den Ausgabenamen (MSPGCC) in Abhängigkeit des gerade verwendeten #define zu ändern ? Danke für eure Hilfe
:
Verschoben durch Moderator
Max ........ schrieb: > Gibt es eine Möglichkeit den Ausgabenamen (MSPGCC) in Abhängigkeit des > gerade verwendeten #define zu ändern ? Der Ausgabename wird ausschließlich auf der Kommandozeile des Compilers festgelegt (mit der Option -o). Du musst also denjenigen bitten, der den Compiler aufruft, dass er einen zum #define-Wert passenden Namen wählt. Falls derjenige das Programm “make” sein sollte, kann man sowas natürlich dadurch erreichen, dass man gleichlautend zum Namen, der bei -o benutzt wird, beim Compilieren das entsprechende #define auf der Kommandozeile mittels -DMACRO=wert erzeugt.
Hi, ja ich rufe "MAKE.EXE" auf. Das makefile befindet sich in meinem Quellcode Ordner und ich rufe es so auf : make.exe --directory="C:\..." Ich arbeite nicht von der Kommandozeile aus, sondern aus dem "MED CX", also einem Editor. Ich bräuchte jetzt eine Möglichkeit z.B. eine Umgebungsvariable zu setzen, die dann vom Makefile wieder als Dateinamen benutzt wird oder sows in der Art ...
Ich schieb' das mal nach "PC Hard- und Software", denn das Problem betrifft ja offensichtlich die von dir genutzte Entwicklungsumgebung. make selbst hat kein Problem, Environmentvariablen zu verarbeiten. Sie werden standardmäßig als make-Variable übernommen:
1 | $ touch foo.c |
2 | $ env CC=foobarmumble make foo.o |
3 | foobarmumble -c -o foo.o foo.c |
4 | make: foobarmumble: Command not found |
5 | make: *** [foo.o] Error 127 |
oder kann man im MAKEFILE auch #defines festlegen, die man dann in den einzelnen Sourcefiles wieder mit #ifdef usw. auswerten kann ? Dann könnte ich meine #defines einfach ins MAKEFILE schieben ... Müsste dann aber natürlich den Ausgabefilename auch im Makefile anpassen können (in Abhängigkeit vom #define)
Max ........ schrieb: > oder kann man im MAKEFILE auch #defines festlegen, die man dann in den > einzelnen Sourcefiles wieder mit #ifdef usw. auswerten kann ? Ja. Ich schrieb doch, dass du einen Präprozessormakro (das ist das, was ein #define erzeugt) auch auf der Kommandozeile erzeugen kannst mittels -D. Das wiederum funktioniert auch aus einem Makefile. Beispiel:
1 | PROJECT_CONFIG=something |
2 | |
3 | CFLAGS += -DPROJECT_CONFIG=$(PROJECT_CONFIG) |
4 | |
5 | all: project-$(PROJECT_CONFIG).elf |
6 | |
7 | project-$(PROJECT_CONFIG).elf: $(OBJECTS) |
8 | $(CC) $(LDFLAGS) -o project-$(PROJECT_CONFIG).elf $(OBJECTS) |
Erzeugt wird beim Aufruf von "make all" eine Datei namens project-something.elf, und beim Compilieren wird ein Makro PROJECT_CONFIG mitgegeben, der den Wert "something" besitzt, also so, als ob du in einer C- oder Headerdatei stehen hättest:
1 | #define PROJECT_CONFIG something
|
Danke Jörg ! ich hatte das oben nicht richtig verstanden. Habe es aber zwischenzeitlich hinbekommen. Vielen Dank nochmal !
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.