Re: portupgrde: make-args oder make-env?

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Thu, 1 Dec 2005 10:11:47 +0100 (CET)

Heino Tiedemann <rotkaps_spam_trap(at)gmx.de> wrote:
> Oliver Fromme <olli(at)lurza.secnetix.de> wrote:
> > baz=hurz Programm
> >
> > hat exakt denselben Effekt wie:
> >
> > (export baz=hurz; Programm)
> >
> > Sprich: Das Programm wird mit der angegebenen Variablen
> > im Environment aufgerufen. Das Environment der aufrufenden
> > Shell bleibt unbeeinflußt.
>
> Is klar. mein liebstes Beispiel
>
> LANG= man <irgendwas>

Naja, wenn man unbedingt LANG global gesetzt haben möchte,
dann kann das wohl zuweilen notwendig sein. Ich würde eher
davon abraten, LANG zu setzen.

> (die deutschen manpages sind oft nicht vollständig)

Die sind sogar überwiegend völlig falsch, weil für ein GNU-
Linux-System, das noch dazu vollkommen veraltet ist.

> > In der Praxis ist es also meistens wurscht, ob man dem make
> > eine Variable im Environment oder per Argument übergibt.
>
> D A N K E!
>
> > Es gibt aber auch Ausnahmen.
>
> Ich bin gespannt! Welche?

Der knifflige Punkt ist, inwieweit sich die Angaben aus dem
Environment, von der Kommandozeile und aus dem Makefile
sich gegenseitig overriden. Auch hierzu sollten Details in
make(1) zu finden sein.

Mal ein einfaches Beispiel zum Nachvollziehen. Leg ein
leeres Verzeichnis zum Testen an und erzeuge darin eine Da-
tei »Makefile« mit folgendem Inhalt:

FOO=fasel
BAR+=blubber
all:
        @echo ${FOO}
        @echo ${BAR}

Die beiden letzten Zeilen beginnen jeweils mit einem Tab,
keine Leerzeichen. Jetzt probier mal drei Varianten aus:

$ make
fasel
blubber

$ make FOO=xxx BAR=yyy
xxx
yyy

$ FOO=xxx BAR=yyy make
fasel
yyy blubber

Wie Du siehst, werden Environment-Variablen nur dann als
Default hergenommen, wenn nichts anderes definiert ist.
Die Kommandozeilen-Zuweisungen dagegen haben Priorität vor
allem anderen, inklusive globale Zuweisungen im Makefile
selbst (oder in /etc/make.conf).

Gruß
   Olli

-- 
Oliver Fromme,  secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing
Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"If you think C++ is not overly complicated, just what is a protected
abstract virtual base pure virtual private destructor, and when was the
last time you needed one?"
        -- Tom Cargil, C++ Journal
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Thu 01 Dec 2005 - 10:12:50 CET

search this site