답변:
이 경우
VAR=value ./configure
동작은 현재 쉘에 따라 다릅니다.
./configure VAR=value
동작은 configure-script에 따라 다릅니다. 일부 개발자는 스크립트 변수를 외부에서 마술처럼 설정하지 않고 스크립트 내에서 변수를 설정할지 여부를 선택하기 때문에 후자를 선호합니다.
실제로는 차이가 거의 없습니다
예를 들어, bash 구성 스크립트의 --help
메시지는 다음과 같습니다.
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.
각각의 경우에 변수를 설정하는 방법이 작동합니다 .
그러나 누군가가 "개선"하기로 결정한 경우 개발자의 환경 설정을 명심하십시오.
더 읽을 거리 :
./configure
config.status
AC_ARG_VAL
(및 개발자의 선호도 표현) :
AC_ARG_VAR
매크로 그것을 설명 및 특정 용도를주는 스크립트를 인수로 특정 (환경) 변수를 선언하기 위해 사용된다. 이 기능은 autoconf의 역사에서 비교적 최근에 추가 되었지만 실제로는 중요합니다. 가장 최근의 존재를 반영하여 매크로에는AS_HELP_STRING
도우미 가 필요하지 않으며 변수 이름과 ./configure --help 중 인쇄 된 문자열의 두 매개 변수 만 사용합니다.
AC_ARG_VAR(var-name, help-string)
오랜 연습에 대한 의견을 계속합니다.
기본적으로 configure는 다른 sh 스크립트와 같이 환경에서 변수를 선택합니다. 그것들의 대부분은 무시됩니다. 이 매크로를 통해 선언되어서는 안됩니다. 이런 식으로 그들은 귀중한 변수로 표시됩니다.
귀중한 것으로 표시된 변수 는 Makefile.in 에서 명시 적을 호출하지 않고 대체
AC_SUBST
되지만 정의에서 가장 중요한 부분은 아닙니다. 중요한 것은 변수가 캐시된다는 것입니다.
AC_ARG_VAR
합니다.
configure가 시작될 때 variable의 값은 명령 행에 지정되지 않았지만 환경을 통해 지정되는 경우를 포함하여 캐시에 저장됩니다. 실제로 configure는 './configure CC = bizarre-cc'에서 CC의 정의를 알 수 있지만 'CC = bizarre-cc. / configure'에서 CC를 정의하는 것은 불가능합니다. 불행히도 대부분의 사용자가하는 일입니다.
env VAR=value ./configure
관련VAR=value ./configure