Was sind die Unterschiede zwischen FOO=bar ./configure
und ./configure FOO=bar
, wobei ./configure
ein Skript ist, das von einemvon autoconf generiert wird? Ich weiß, dass das ehemalige setzt die Umgebungsvariable FOO
zu bar
vor dem Ausführen des Skripts ./configure
, und das letztere übergibt die Zeichenfolge FOO=bar
an ./configure
. Ich denke, dass ./configure
interpretiert dies (und merkt es?) Als Einstellung der Variablen FOO
gleich bar
, aber darüber hinaus weiß ich nicht. Gibt es irgendwelche Vorteile, es auf die eine oder andere Weise zu tun?Übergabe von Umgebungsvariablen an autoconf `./Configure`
6
A
Antwort
6
Wenn die Zuweisung an configure
als Argument übergeben wird, ist sichergestellt, dass die Zuweisung in config.status
verfügbar ist. Daher wird sie auf config.status --recheck
festgelegt. Das ist der Hauptvorteil, die Zuweisung als Argument zu machen. Beachten Sie, dass die aktuelle Autoconf-Dokumentation dies empfiehlt, die Zuweisung über die Umgebung zu übergeben. Ältere Versionen von autoconf erlaubten keine Zuweisungen als zu konfigurierende Argumente. Daher ist es notwendig, beim Ausführen alter configure-Skripte das ältere Formular zu verwenden, und Gewohnheiten sterben so sehr, dass viele Leute weiterhin die Umgebung nutzen. Es ist jedoch eine gute Angewohnheit, Aufgaben über Argumente zu übergeben.
Siehe auch die Definition von _precious Variablen_ in der Dokumentation für 'AC_ARG_VAR'. Auf diese Weise speichert 'configure', welche Umgebungsvariable für' --check' beibehalten werden soll oder wessen Änderung den verwendeten Konfigurationscache ungültig machen soll. – adl