Moin!
Bis jetzt verwende ich eine gemeinsame Sammlung an Quellen für mehrere
Projekte auf verschiedenen AVR Chips (mega16, mega8 etc). Diese werden
für jedes Projekt über EXTRAINCDIRS und VPATH eingebunden. Klappt prima.
Ändere ich etwas an den gemeinsamen Quellen, so muss ich allerdings für
jede Plattform testen, ob dies damit auch funktioniert. Das stört auf
Dauer!
Daher gibt es ein kleines Python-Skript, welches dynamisch aus einem
generischen Testmakefile für verschiedene Targets automatisiert
compiliert. Und nun das Problem:
Im Makefile habe ich Definitionen wie z. B.:
1 | CPPSRC = libavr/tools/EepEnduranceStore.cpp \
|
2 | libavr/drivers/lcds/DogSpi.cpp \
|
3 | libavr/drivers/sensors/PressSensors.cpp \
|
4 | libavr/drivers/I2cEeprom.cpp \
|
5 | libavr/drivers/Pcf8574.cpp
|
Diesen will ich beim Aufruf von make über die override Funktion
umdefinieren, so dass ein Befehl entsteht wie folgt:
1 | make CPPSRC=libavr/tools/EepEnduranceStore.cpp libavr/drivers/lcds/DogSpi.cpp ... MCU=atmega8 lib
|
Nur, ich kann Quotes verwenden wie ich will ("'`´), das Makefile fliegt
mir entweder um die Ohren oder (ohne Quotes) wird nur die erste Datei
erkannt. Die anderen werden ignoriert.
Also, wie kann ich per Kommandozeile eine Liste mehrerer Einträge
mittels Variablenüberschreibung übergeben? Ich hab keinen Plan!
Die Make-Hilfe
(http://www.apl.jhu.edu/Misc/Unix-info/make/make_9.html#SEC83) hilft
leider auch nicht weiter. Dort steht z. B.:
1 | Each time you run make, you can override this value if you wish.
|
2 | For example, if you say `make CFLAGS='-g -O'', each C compilation
|
3 | will be done with `cc -c -g -O'. (This illustrates how you can use
|
4 | quoting in the shell to enclose spaces and other special characters
|
5 | in the value of a variable when you override it.)
|
Weiss da jemand weiter??? Danke, Michael