การตรวจสอบค่าตัวแปรสภาพแวดล้อมใน Makefile


21

ฉันมีเป้าหมาย Makefile ซึ่งฉันต้องตรวจสอบค่าของตัวแปรสภาพแวดล้อม แต่ฉันไม่ได้รับมันแน่นอน พยายามอย่างหนัก แต่หาไม่เจอ ความช่วยเหลือใด ๆ ที่ชื่นชม

ชื่อตัวแปรสภาพแวดล้อม: ทดสอบค่าของมัน: "TRUE"

test_target: 
    ifeq ($(TEST),"TRUE")
            echo "Do something"
    endif

ฉันได้รับข้อผิดพลาดต่อไปนี้:

/bin/sh: -c: line 0: syntax error near unexpected token `"TRUE","TRUE"'
/bin/sh: -c: line 0: `ifeq ("TRUE","TRUE")'

คำตอบ:


26

ifeq()สั่งจะต้องมีในคอลัมน์ที่ 1 ลบช่องว่างชั้นนำเช่น

test_target: 
ifeq ($(TEST),"TRUE")
        echo "Do something"
endif

^ ไม่มีช่องว่าง


14

คุณต้องไม่ใส่ifeqTAB อนุญาตให้เว้นวรรค อ่านเอกสารยี่ห้อ GNU

test_target: 
ifeq ($(TEST),"TRUE")
    echo "Do something"
endif

โปรดทราบว่ามันเปรียบเทียบ$(TEST)กับ"TRUE"ที่เป็น:

$ make TEST=TRUE
make: Nothing to be done for 'test_target'.

$ make TEST='"TRUE"'
echo "Do something"
Do something

บิตนี้มีประโยชน์เป็นพิเศษ - โปรดทราบว่าจะเปรียบเทียบ $ (TEST) กับ "TRUE" ตามที่เป็น: ขอบคุณ
kakoma
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.