VAR=value ./configure
同じですか./configure VAR=value
?
最初のケースではシェルが環境変数を設定し、2番目のケースでは、構成スクリプトは文字列を引数'VAR=value'
として使用して変数を設定できます。構成が変数を使用して他の操作(特定の値を無視またはフィルタリングするなど)を実行するのか、そして最初に変数を引数として使用するのですか?
ベストアンサー1
この場合
VAR=value ./configure
動作は現在のシェルによって異なり、ここでは
./configure VAR=value
動作は設定スクリプトによって異なります。一部の開発者は、誰かが外部から魔法のようにスクリプト変数を設定するのではなく、スクリプト内で変数を設定するかどうかを選択したいので、後者を好みます。
実はその違いはとても小さいから
- 設定を行うほとんどの人は、以前の動作が「ただ動作する」POSIXシェルで実行されます。
- ほとんどの構成スクリプトは既存の環境変数を設定解除しません。
- 伝統的な環境変数(automakeの外側)には長い使用履歴があります。
たとえば、--help
bash設定スクリプトからのメッセージは次のようになります。
Some influential environment variables:
DEBUGGER_START_FILE
location of bash debugger initialization file
CC C compiler command
CFLAGS C compiler flags
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
LIBS libraries to pass to the linker, e.g. -l<library>
CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
CPP C preprocessor
YACC The `Yet Another C Compiler' implementation to use. Defaults to
the first program found out of: `bison -y', `byacc', `yacc'.
YFLAGS The list of arguments that will be passed by default to $YACC.
This script will default YFLAGS to the empty string to avoid a
default value of `-d' given by some make applications.
それぞれの場合に変数を設定する方法の1つは、働く。
しかし、誰かが何かを「改善」することにした場合に備えて、開発者の好みを念頭に置いてください。
追加資料:
- 環境変数をautoconfに渡す
./configure
値を入力するには、後者(VAR = value)が必要であることを示します。config.status
- 3.3。パラメータとしての環境変数
AC_ARG_VAL
automakeの観点から議論し、開発者の好みを表現します。
この
AC_ARG_VAR
マクロは、特定の(環境)変数をスクリプトの引数として宣言し、説明と特定の目的を提供するために使用されます。この機能が適用されましたが、最近autoconfの記録が追加されました。、これは本当に重要です。このマクロにはヘルパーは必要なく、AS_HELP_STRING
変数名と最近の出現を反映する./configure --help中に印刷された文字列という2つの引数のみが必要です。
AC_ARG_VAR(var-name, help-string)
そして、長年の練習について続けてコメントします。
デフォルトでは、設定は他のshスクリプトと同様に環境から変数を取得します。ほとんどは無視されます。それ以外のものはこのマクロで宣言する必要があります。このように、彼らは貴重な変数として表示されます。
貴重なgetで示される変数Makefile.inで置き換える明示的を呼び出す必要はありませんが、
AC_SUBST
定義の最も重要な部分ではありません。重要なのは、変数がキャッシュされることです。
- 7.2 出力変数の設定(autoconfドキュメント)は開発者の好みを再現して
説明します。AC_ARG_VAR
変数の値は、コマンドラインではなく環境を介して指定されたケースを含む、構成の開始時にキャッシュに保存されます。実際、設定は「./configure CC = bizarre-cc」でCCの定義を確認できますが、「CC = bizarre-cc ./configure」ではこれを確認できません。これは残念ながらほとんどのWhatユーザーに当てはまります。する。