Trong trường hợp này
VAR=value ./configure
hành vi phụ thuộc vào vỏ hiện tại của bạn, trong khi trong này
./configure VAR=value
hành vi phụ thuộc vào tập lệnh configure. Một số nhà phát triển thích cái sau bởi vì họ muốn chọn có đặt các biến trong tập lệnh hay không, thay vì có ai đó đặt các biến của tập lệnh một cách kỳ diệu từ bên ngoài.
Trong thực tế, có rất ít sự khác biệt bởi vì
- hầu hết mọi người thực hiện cấu hình đang chạy từ trình bao POSIX, trong đó hành vi trước đây "chỉ hoạt động" và
- hầu hết các tập lệnh cấu hình không bỏ đặt các biến môi trường hiện có và
- các biến môi trường thông thường (bên ngoài tự động) có cách sử dụng lâu dài
Ví dụ, --help
thông báo của tập lệnh cấu hình bash hiển thị điều này:
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.
và trong mỗi trường hợp, một trong hai cách thiết lập biến hoạt động .
Nhưng hãy ghi nhớ sở thích của nhà phát triển, trong trường hợp ai đó quyết định "cải thiện" mọi thứ.
Đọc thêm:
Các AC_ARG_VAR
vĩ mô được sử dụng để khai báo một (môi trường) biến đặc biệt như một đối số cho kịch bản, cho nó một mô tả và một sử dụng cụ thể. Mặc dù tính năng này đã được thêm vào tương đối gần đây trong lịch sử của autoconf , nhưng nó thực sự quan trọng. Phản ánh sự hiện diện gần đây của nó, macro không cần trình AS_HELP_STRING
trợ giúp và chỉ nhận hai tham số: tên của biến và chuỗi được in trong ./cool --help:
AC_ARG_VAR(var-name, help-string)
và tiếp tục với một nhận xét về thực hành lâu dài:
Theo mặc định, cấu hình chọn các biến từ môi trường như bất kỳ tập lệnh sh nào khác. Hầu hết những người bị bỏ qua. Những cái không nên được khai báo thông qua macro này. Bằng cách này, chúng được đánh dấu là một biến quý.
Một biến được đánh dấu là quý được thay thế trong Makefile.in mà không phải gọi một từ rõ ràng AC_SUBST
, nhưng đó không phải là phần quan trọng nhất của định nghĩa. Điều quan trọng là biến được lưu trữ.
- 7.2 Thiết lập các biến đầu ra (tài liệu autoconf)
mô tả AC_ARG_VAR
, một lần nữa thể hiện sở thích của nhà phát triển.:
Giá trị của biến khi khởi chạy cấu hình được lưu trong bộ đệm, bao gồm cả nếu nó không được chỉ định trên dòng lệnh mà thông qua môi trường. Thật vậy, trong khi cấu hình có thể nhận thấy định nghĩa của CC trong './mình CC = bizarre-cc', không thể nhận thấy nó trong 'CC = bizarre-cc ./cool', điều không may là hầu hết người dùng làm.
env VAR=value ./configure
liên quan đếnVAR=value ./configure