Make'deki değişken atama için bkz .: = ve = operatörü. Aralarındaki fark nedir?
Make'deki değişken atama için bkz .: = ve = operatörü. Aralarındaki fark nedir?
Yanıtlar:
Bu, GNU Make belgelerinde 6.2 Değişkenlerin İki Tadı başlıklı bölümde açıklanmıştır .
Kısaca, ile tanımlanan değişkenler bir :=
kez genişletilir, ancak ile tanımlanan değişkenler =
her kullanıldıklarında genişletilir.
make
ana işi) bu tür dahili değişken çözümlemesinden çok daha fazla ek yükü vardır.
:=
Basit bir atama ifadesi, ilk oluşumda yalnızca bir kez değerlendirilir. Örneğin CC :=${GCC} ${FLAGS}
, ilk karşılaşma sırasında değerlendirilirse, gcc -W
o zaman her ${CC}
meydana gelirse, ile değiştirilecektir gcc -W
.
=
Yinelemeli bir atama ifadesi, kodda değişkenle her karşılaşıldığında değerlendirilir. Örneğin, benzer bir ifade, CC = ${GCC} {FLAGS}
yalnızca benzer bir işlem ${CC} file.c
yürütüldüğünde değerlendirilecektir. Bununla birlikte, değişken GCC
yeniden atanırsa, yani yeniden atamadan
GCC=c++
sonra ${CC}
dönüştürülür c++ -W
.
?=
Koşullu atama, bir değişkene yalnızca bir değeri yoksa bir değer atar
+=
Varsaymak CC = gcc
sonra ekleme operatör gibi kullanılır CC += -w
ardından CC
şimdi değere sahiptirgcc -W
Daha fazla bilgi için bu eğitimlere göz atın
Gönderen http://www.gnu.org/software/make/manual/make.html#Flavors :
=
özyinelemeli olarak genişletilmiş bir değişken tanımlar. :=
basitçe genişletilmiş bir değişkeni tanımlar.