Pada kasus ini
VAR=value ./configure
perilaku tergantung pada shell Anda saat ini, sementara dalam hal ini
./configure VAR=value
perilaku tergantung pada skrip configure. Beberapa pengembang lebih suka yang terakhir karena mereka ingin memilih apakah akan mengatur variabel dalam skrip, daripada meminta seseorang untuk secara ajaib mengatur variabel skrip dari luar.
Dalam praktiknya, ada sedikit perbedaan karena
- kebanyakan orang melakukan konfigurasi berjalan dari shell POSIX, di mana perilaku sebelumnya "hanya bekerja", dan
- kebanyakan skrip konfigurasi tidak membatalkan variabel lingkungan yang ada, dan
- variabel lingkungan konvensional (di luar automake) telah lama digunakan
Misalnya, --help
pesan skrip bash configure memperlihatkan ini:
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.
dan dalam setiap kasus, cara pengaturan variabel berfungsi .
Tetapi perlu diingat preferensi pengembang, jika seseorang memutuskan untuk "meningkatkan" hal-hal.
Bacaan lebih lanjut:
The AC_ARG_VAR
makro digunakan untuk menyatakan suatu tertentu (lingkungan) variabel sebagai argumen untuk script, memberikan deskripsi dan penggunaan tertentu. Sementara fitur ini telah ditambahkan relatif baru dalam sejarah autoconf , ini sangat penting. Mencerminkan kehadirannya yang lebih baru, makro tidak membutuhkan AS_HELP_STRING
helper, dan hanya membutuhkan dua parameter: nama variabel dan string yang dicetak selama ./configure --help:
AC_ARG_VAR(var-name, help-string)
dan berlanjut dengan komentar tentang latihan yang sudah berlangsung lama:
Secara default, konfigurasikan mengambil variabel dari lingkungan seperti skrip sh lainnya. Sebagian besar dari mereka diabaikan. Mereka yang tidak harus dinyatakan melalui makro ini. Dengan cara ini mereka ditandai sebagai variabel yang berharga.
Variabel yang ditandai sebagai berharga akan diganti di Makefile.in tanpa harus memanggil eksplisit AC_SUBST
, tetapi itu bukan bagian terpenting dari definisi. Yang penting adalah bahwa variabel di-cache.
- 7.2 Mengatur Variabel Keluaran (dokumentasi autoconf)
menjelaskan AC_ARG_VAR
, lagi-lagi menyatakan preferensi pengembang .:
Nilai variabel saat konfigurasi diluncurkan disimpan dalam cache, termasuk jika tidak ditentukan pada baris perintah tetapi melalui lingkungan. Memang, sementara configure dapat melihat definisi CC di './configure CC = bizarre-cc', tidak mungkin untuk melihatnya di 'CC = bizarre-cc ./configure', yang, sayangnya, adalah apa yang dilakukan sebagian besar pengguna.
env VAR=value ./configure
hubungannya denganVAR=value ./configure