許容変数をパラメータとして設定するのはなぜですか?

許容変数をパラメータとして設定するのはなぜですか?

VAR=value ./configure同じですか./configure VAR=value

最初のケースではシェルが環境変数を設定し、2番目のケースでは、構成スクリプトは文字列を引数'VAR=value'として使用して変数を設定できます。構成が変数を使用して他の操作(特定の値を無視またはフィルタリングするなど)を実行するのか、そして最初に変数を引数として使用するのですか?

ベストアンサー1

この場合

VAR=value ./configure

動作は現在のシェルによって異なり、ここでは

./configure VAR=value

動作は設定スクリプトによって異なります。一部の開発者は、誰かが外部から魔法のようにスクリプト変数を設定するのではなく、スクリプト内で変数を設定するかどうかを選択したいので、後者を好みます。

実はその違いはとても小さいから

  • 設定を行うほとんどの人は、以前の動作が「ただ動作する」POSIXシェルで実行されます。
  • ほとんどの構成スクリプトは既存の環境変数を設定解除しません。
  • 伝統的な環境変数(automakeの外側)には長い使用履歴があります。

たとえば、--helpbash設定スクリプトからのメッセージは次のようになります。

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つは、働く

しかし、誰かが何かを「改善」することにした場合に備えて、開発者の好みを念頭に置いてください。

追加資料:

この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ユーザーに当てはまります。する。

おすすめ記事