MSP430 GCC #define und Makefile.

OP #3611475
Lesenswert?

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
Moderator Persönliche Seite #3611497
Lesenswert?

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.
OP #3611542
Lesenswert?

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 ...
Moderator Persönliche Seite #3611551
Lesenswert?

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
OP #3611557
Lesenswert?

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)
Moderator Persönliche Seite #3611615
Lesenswert?

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

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