Ask:
What is the difference:
VARIABLE = value
VARIABLE ?= value
VARIABLE := value
VARIABLE += value
I have read the section in GNU make's manual, but it still doesn' t make sense to me.
Explanation:
Variable = Value
Normal setting of a variable-values within it are recursively expanded when the variable is used, not when it's declared
Variable: = Value
Setting of a variable with simple expansion of the values inside-values within it are expanded at declaration time.
Variable? = Value
Setting of a variable only if it doesn't have a value
Variable + = Value
Appending the supplied value to the existing value
========================================================== ====================================
########################## Makefile ############# ######
A = orginal_value
B = $ ()
A = later_value
ALL:
@ Echo $ (B)
######################################## ##########
# Make
Later_value
########################## Makefile ############# ######
A = orginal_value
B: = $ ()
A = later_value
ALL:
@ Echo $ (B)
######################################## ###########
# Make
Original_value
######################################## ###########
The difference is obvious: = the defined variable does not extend if the value content is itself a variable. If it is =, it will extend. Therefore, when using it, you must add the following when you do not need to extend it to prevent uncontrollable situations.