ตามที่พบในที่เก็บรายชื่ออีเมล
สามารถใช้filter
ฟังก์ชันนี้ได้
ตัวอย่างเช่น
ifeq ($(GCC_MINOR),$(filter $(GCC_MINOR),4 5))
filter X, A B
จะส่งคืนค่า A, B ที่เท่ากับ X หมายเหตุแม้ว่าจะไม่เกี่ยวข้องกับตัวอย่างข้างต้น แต่เป็นการดำเนินการ XOR เช่นถ้าคุณมีสิ่งที่ต้องการแทน:
ifeq (4, $(filter 4, $(VAR1) $(VAR2)))
แล้วทำเช่นmake VAR1=4 VAR2=4
กรองจะกลับซึ่งไม่เท่ากับ4 4
4
รูปแบบที่ดำเนินการ OR แทนคือ:
ifneq (,$(filter $(GCC_MINOR),4 5))
ซึ่งใช้การเปรียบเทียบเชิงลบกับสตริงว่างแทน ( filter
จะส่งคืนสตริงว่างหากGCC_MINOR
ไม่ตรงกับอาร์กิวเมนต์) การใช้VAR1
/ VAR2
ตัวอย่างจะมีลักษณะดังนี้:
ifneq (, $(filter 4, $(VAR1) $(VAR2)))
ข้อเสียของวิธีการเหล่านั้นคือคุณต้องแน่ใจว่าอาร์กิวเมนต์เหล่านี้จะเป็นคำเดียวเสมอ ตัวอย่างเช่น if VAR1
is 4 foo
ผลลัพธ์ตัวกรองยังคงเป็น4
และifneq
นิพจน์ยังคงเป็นจริง ถ้าVAR1
เป็น4 5
ผลการกรองจะเป็น4 5
และifneq
นิพจน์เป็นจริง
ทางเลือกหนึ่งที่ง่ายคือการดำเนินการเดียวกันทั้งในifeq
และelse ifeq
สาขาเช่นนี้:
ifeq ($(GCC_MINOR),4)
@echo Supported version
else ifeq ($(GCC_MINOR),5)
@echo Supported version
else
@echo Unsupported version
endif