PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Makefile: Makro Vorbedingung


mekakic
2011-07-04, 18:08:15
In einem GNU Makefile gebe ich ja üblicherweise einen target Block so an:


target : depending1 depending2
# code


Ich möchte eigentlich etwas relativ simples machen und zwar eine Environment Variable setze und danach ein anderes Make target ausführen. Also sowas:


target : depending1
# code
setConfig1.sh
make depending2


Rufe ich bei sowas einfach nochmal make mit dem richtigen target auf oder kann ich das im Makefile Syntax irgendwie eleganter formulieren?

Danke!

Marscel
2011-07-04, 23:57:27
Offizielle Guideline: http://www.gnu.org/s/hello/manual/make/Recursion.html#Recursion

mekakic
2011-07-05, 08:37:17
Ich tue mich mit dem Variablen Handling im Makefile irgendwie sehr schwer. :(

Wenn ich im Makefile eine Variable exportieren möchte, die dann fürs gesamte Make zur Verfügung steht:

#Makefile
target : somethin
export ACONFIG_NAME=test1
g++ foo.c


//foo.c
#include "$ACONFIG_NAME/foo.h"

Dann wird "$ACONFIG_NAME/foo.h" nie zu "test1/foo.h" ausgewertet und gefunden. Wenn ich im Makefile @echo "$ACONFIG_NAME" ausgebe, dann erscheint nur echo "CONFIG_NAME". Verstehen tue ich das irgendwie gar nicht... was läuft da schief? :confused:

Sephiroth
2011-07-05, 20:41:50
kann man nicht das target jeweils unterschiedlich definieren und dann auf zwei andere targets "verweisen"?

ifdef FOO
target:: realtarget-foo
else
target:: realtarget-bar
endif

realtarget-foo::
#code foo

realtarget-bar::
#code bar
tja und dann einfach "make target" nutzen