Sử dụng =
gây ra biến được gán một giá trị. Nếu biến đã có một giá trị, nó được thay thế. Giá trị này sẽ được mở rộng khi nó được sử dụng. Ví dụ:
HELLO = world
HELLO_WORLD = $(HELLO) world!
# This echoes "world world!"
echo $(HELLO_WORLD)
HELLO = hello
# This echoes "hello world!"
echo $(HELLO_WORLD)
Sử dụng :=
tương tự như sử dụng =
. Tuy nhiên, thay vì giá trị được mở rộng khi nó được sử dụng, nó được mở rộng trong quá trình gán. Ví dụ:
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)
Sử dụng ?=
gán cho biến một giá trị iff biến không được gán trước đó. Nếu trước đó biến đã được gán một giá trị trống ( VAR=
), thì nó vẫn được coi là tập hợp tôi nghĩ . Nếu không, các chức năng chính xác như=
.
Sử dụng +=
cũng giống như sử dụng =
, nhưng thay vì thay thế giá trị, giá trị được gắn vào giá trị hiện tại, với khoảng trắng ở giữa. Nếu biến được đặt trước đó :=
, nó được mở rộng tôi nghĩ . Giá trị kết quả được mở rộng khi nó được sử dụng tôi nghĩ . Ví dụ:
HELLO_WORLD = hello
HELLO_WORLD += world!
# This echoes "hello world!"
echo $(HELLO_WORLD)
Nếu một cái gì đó giống như HELLO_WORLD = $(HELLO_WORLD) world!
được sử dụng, đệ quy sẽ có kết quả, rất có thể sẽ kết thúc việc thực hiện Makefile của bạn. Nếu A := $(A) $(B)
được sử dụng, kết quả sẽ không chính xác như sử dụng+=
vì B
được mở rộng :=
trong khi +=
sẽ không B
được mở rộng.