Menggunakan =menyebabkan variabel diberi nilai. Jika variabel sudah memiliki nilai, itu diganti. Nilai ini akan diperluas saat digunakan. Sebagai contoh:
HELLO = world
HELLO_WORLD = $(HELLO) world!
# This echoes "world world!"
echo $(HELLO_WORLD)
HELLO = hello
# This echoes "hello world!"
echo $(HELLO_WORLD)
Menggunakan :=mirip dengan menggunakan =. Namun, alih-alih nilai diperluas ketika digunakan, itu diperluas selama penugasan. Sebagai contoh:
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)
Menggunakan ?=memberikan nilai variabel jika variabel sebelumnya tidak ditugaskan. Jika variabel sebelumnya diberi nilai kosong ( VAR=), itu masih dianggap set saya pikir . Kalau tidak, fungsinya persis seperti =.
Menggunakan +=seperti menggunakan =, tetapi alih-alih mengganti nilai, nilai ditambahkan ke nilai saat ini, dengan spasi di antaranya. Jika variabel sebelumnya diatur dengan :=, saya pikir diperluas . Nilai yang dihasilkan diperluas ketika digunakan saya pikir . Sebagai contoh:
HELLO_WORLD = hello
HELLO_WORLD += world!
# This echoes "hello world!"
echo $(HELLO_WORLD)
Jika sesuatu seperti HELLO_WORLD = $(HELLO_WORLD) world!digunakan, rekursi akan terjadi, yang kemungkinan besar akan mengakhiri eksekusi Makefile Anda. Jika A := $(A) $(B)digunakan, hasilnya tidak akan sama persis dengan menggunakan +=karena Bdiperluas dengan :=sedangkan +=tidak akan menyebabkan Bdiperluas.