Bu durumda
VAR=value ./configure
bu davranış geçerli kabuğunuza bağlıdır.
./configure VAR=value
davranış configure komut dosyasına bağlıdır. Bazı geliştiriciler ikincisini tercih eder, çünkü birisinin komut dosyasının değişkenlerini sihirli bir şekilde dışarıdan ayarlaması yerine kod içinde değişkenleri ayarlayıp ayarlamayacağını seçmek isterler.
Pratikte çok az fark var çünkü
- yapılandırma yapan çoğu kişi eski davranışın "işe yaradığı" bir POSIX kabuğundan çalışıyor ve
- çoğu yapılandırma betiği varolan ortam değişkenlerini belirlemez ve
- geleneksel ortam değişkenleri (otomobil üreticisinin dışında) köklü kullanıma sahiptir
Örneğin, bash configure betiğinin --help
mesajı şunu gösterir:
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.
ve her durumda, değişkenin her iki şekilde ayarlanması da işe yarar .
Ancak birisinin işleri "iyileştirmeye" karar vermesi durumunda geliştiricinin tercihlerini unutmayın.
Daha fazla okuma:
AC_ARG_VAR
Makro oa açıklama ve özel bir kullanıma veren komut dosyası için bir bağımsız değişken olarak, belirli bir (ortam) değişken bildirmek için kullanılır. Bu özellik autoconf tarihine nispeten yakın zamanda eklenmiş olsa da, gerçekten önemlidir. En son varlığını yansıtan makronun AS_HELP_STRING
yardımcıya ihtiyacı yoktur ve yalnızca iki parametre alır: değişkenin adı ve ./configure --help sırasında yazdırılan dize:
AC_ARG_VAR(var-name, help-string)
ve uzun süredir devam eden uygulamalar hakkında bir yorum ile devam ediyor:
Varsayılan olarak, config değişkenleri ortamdaki diğer sh komut dosyalarında olduğu gibi alır. Bunların çoğu yok sayılıyor. Olmayanlar bu makro ile bildirilmelidir. Bu şekilde değerli bir değişken olarak işaretlenirler.
Değerli olarak işaretlenen bir değişken Makefile.in dosyasında açık olarak adlandırılmak zorunda kalmadan değiştirilir AC_SUBST
, ancak bu tanımın en önemli kısmı değildir. Önemli olan değişkenin önbelleğe alınmasıdır.
- 7.2 Ayar Çıktı Değişkenler (autoconf belgeler)
açıklar AC_ARG_VAR
tekrar geliştirici tercihlerini ifade .:
Configure betiği başlatıldığında değişkenin değeri, komut satırında değil ortam üzerinden belirtilmiş olması da dahil olmak üzere önbelleğe kaydedilir. Gerçekten de, config './configure CC = bizarre-cc' içindeki CC tanımını fark edebilirken, ne yazık ki çoğu kullanıcının yaptığı 'CC = bizarre-cc ./configure' da bunu fark etmek imkansızdır.
env VAR=value ./configure
VAR=value ./configure