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.
makeana 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 -Wo 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.cyürütüldüğünde değerlendirilecektir. Bununla birlikte, değişken GCCyeniden 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 = gccsonra 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.