2012-12-12 14 views
6

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`

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.

+0

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

Verwandte Themen