ในกรณีนี้
VAR=value ./configure
พฤติกรรมขึ้นอยู่กับเปลือกปัจจุบันของคุณในขณะที่อยู่ในนี้
./configure VAR=value
ลักษณะการทำงานขึ้นอยู่กับ configure-script นักพัฒนาบางคนชอบแบบหลังเพราะพวกเขาต้องการเลือกว่าจะตั้งค่าตัวแปรภายในสคริปต์หรือไม่แทนที่จะให้ใครบางคนตั้งค่าตัวแปรของสคริปต์จากภายนอกอย่างน่าอัศจรรย์
ในทางปฏิบัติมีความแตกต่างเพียงเล็กน้อยเพราะ
- คนส่วนใหญ่ที่ทำการกำหนดค่ากำลังเรียกใช้จาก POSIX เชลล์ซึ่งพฤติกรรมเดิม "เพิ่งใช้งานได้" และ
- สคริปต์กำหนดค่าส่วนใหญ่ไม่ได้ยกเลิกการตั้งค่าตัวแปรสภาพแวดล้อมที่มีอยู่และ
- ตัวแปรสภาพแวดล้อมทั่วไป (อยู่ภายนอก automake) มีการใช้งานที่ยาวนาน
ตัวอย่างเช่นข้อความทุบตีกำหนดค่าสคริปต์--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.
และในแต่ละกรณีทั้งวิธีการตั้งค่าตัวแปรงาน
แต่โปรดคำนึงถึงความชอบของนักพัฒนาในกรณีที่มีคนตัดสินใจที่จะ "ปรับปรุง" สิ่งต่าง ๆ
อ่านเพิ่มเติม:
AC_ARG_VAR
แมโครจะใช้ในการประกาศโดยเฉพาะอย่างยิ่งตัวแปร (สภาพแวดล้อม) เป็นอาร์กิวเมนต์สำหรับสคริปต์ที่ให้มันมีรายละเอียดและการใช้งานโดยเฉพาะอย่างยิ่ง ในขณะที่คุณสมบัตินี้ได้รับการเพิ่มเข้ามาค่อนข้างเร็วในประวัติศาสตร์ของ autoconfแต่มันสำคัญมาก สะท้อนถึงการมีอยู่ล่าสุดของมันแมโครไม่ต้องการตัวAS_HELP_STRING
ช่วยเหลือและรับพารามิเตอร์สองตัวเท่านั้น: ชื่อของตัวแปรและสตริงที่พิมพ์ระหว่าง. / config --help:
AC_ARG_VAR(var-name, help-string)
และแสดงความคิดเห็นเกี่ยวกับการปฏิบัติที่ยาวนาน:
โดยค่าเริ่มต้นกำหนดค่ารับตัวแปรจากสภาพแวดล้อมเช่นสคริปต์ sh อื่น ๆ ส่วนใหญ่จะถูกละเว้น สิ่งที่ไม่ควรถูกประกาศผ่านแมโครนี้ วิธีนี้พวกเขาถูกทำเครื่องหมายเป็นตัวแปรที่มีค่า
ตัวแปรที่ระบุว่ามีค่าจะได้รับการแทนที่ใน Makefile.inโดยไม่ต้องเรียกชัดเจนAC_SUBST
แต่นั่นไม่ใช่ส่วนที่สำคัญที่สุดของคำนิยาม สิ่งสำคัญคือตัวแปรถูกแคชไว้
- 7.2 การตั้งค่าตัวแปรเอาต์พุต (
อธิบายเอกสาร autoconf) AC_ARG_VAR
อีกครั้งแสดงการตั้งค่าของนักพัฒนา:
ค่าของตัวแปรเมื่อเปิดใช้งานการกำหนดค่าจะถูกบันทึกไว้ในแคชรวมถึงหากไม่ได้ระบุในบรรทัดคำสั่ง แต่ผ่านสภาพแวดล้อม ในขณะที่การกำหนดค่าสามารถสังเกตเห็นคำจำกัดความของ CC ใน './configure CC = bizarre-cc' เป็นไปไม่ได้ที่จะสังเกตเห็นมันใน 'CC = bizarre-cc ./configure' ซึ่งน่าเสียดายที่ผู้ใช้ส่วนใหญ่ทำ
env VAR=value ./configure
เกี่ยวข้องกับอย่างไรVAR=value ./configure