การใช้=ทำให้ตัวแปรถูกกำหนดค่า หากตัวแปรมีค่าอยู่แล้วมันจะถูกแทนที่ ค่านี้จะถูกขยายเมื่อมีการใช้งาน ตัวอย่างเช่น:
HELLO = world
HELLO_WORLD = $(HELLO) world!
# This echoes "world world!"
echo $(HELLO_WORLD)
HELLO = hello
# This echoes "hello world!"
echo $(HELLO_WORLD)
ใช้เป็นคล้ายกับการใช้:= =อย่างไรก็ตามแทนที่จะเป็นค่าที่ถูกขยายเมื่อใช้มันจะถูกขยายระหว่างการกำหนด ตัวอย่างเช่น:
HELLO = world
HELLO_WORLD := $(HELLO) world!
# This echoes "world world!"
echo $(HELLO_WORLD)
HELLO = hello
# Still echoes "world world!"
echo $(HELLO_WORLD)
HELLO_WORLD := $(HELLO) world!
# This echoes "hello world!"
echo $(HELLO_WORLD)
การใช้?=กำหนดค่าตัวแปรถ้าไม่ได้กำหนดตัวแปรไว้ก่อนหน้านี้ ถ้าตัวแปรที่ถูกกำหนดไว้ก่อนหน้าค่าว่าง ( VAR=) ก็ยังถือว่าเป็นชุดที่ผมคิดว่า มิฉะนั้นฟังก์ชั่นเหมือน=กัน
การใช้+=เป็นเหมือนการใช้=แต่แทนที่จะแทนที่ค่าค่าจะถูกผนวกเข้ากับค่าปัจจุบันโดยมีช่องว่างอยู่ระหว่าง ถ้าตัวแปรถูกตั้งก่อนหน้านี้ด้วย:=ก็จะขยายตัวผมคิดว่า มูลค่าส่งผลให้มีการขยายเมื่อมันถูกนำมาใช้ผมคิดว่า ตัวอย่างเช่น:
HELLO_WORLD = hello
HELLO_WORLD += world!
# This echoes "hello world!"
echo $(HELLO_WORLD)
หากHELLO_WORLD = $(HELLO_WORLD) world!มีการใช้บางสิ่งเช่นนี้การเรียกซ้ำจะเกิดขึ้นซึ่งน่าจะเป็นการสิ้นสุดการเรียกใช้ Makefile ของคุณ หากA := $(A) $(B)มีการใช้งานผลลัพธ์จะไม่เหมือนกันทุกประการกับการใช้+=เพราะBถูกขยายด้วย:=แต่+=จะไม่ทำให้เกิดBการขยาย