Wątek przeniesiony 2017-01-04 13:12 z C/C++ przez kq.

Czy się różni '=', ':=' i '::=' w makefilu

0

Witam
Jaka jest różnica między '=', ':=' i '::=' bo czytam na stronie gnu ale nie mogę zrozumieć.
Podejrzewam, że znak '=' to przypisanie zmiennej czegoś.
Wiem też że znakiem ':' oznacza się że lewa strona zależy od prawej. np.

plik.o : plik.c plik.h
 <tab>gcc -c $@ $^ $(CFLAGS)
#plik.o zależy od plik.c i plik.h i jak ktorys z nich sie zmieni to wygeneruj nowy plik.o rekompilując plik.c z flagami ze zmiennej CFLAGS
0

Dwóch średników nigdy nie widziałem.

  • = przypisuje wartość, która będzie rekursywnie ewaluowana w miejscu użycia
  • := przypisuje wartość, ewaluacja w miejscu deklaracji
  • ?= przypisuje wartość tylko jeśli zmienna nie ma już wartości
  • += dodaje kolejną wartość do zmiennej

Więcej informacji tutaj

0
= przypisuje wartość, która będzie rekursywnie ewaluowana w miejscu użycia
:= przypisuje wartość, ewaluacja w miejscu deklaracji

aha czyli w przypadku '=' to co jest po prawej stronie nie zostanie wykonane. Dopiero gdy wywołamy to co jest po lewej stronie to będzie wykonanie tego co po prawej.
w przypadku ':=' to co jest po prawej stronie sie wykona i wynik wykonania zostanie przypisany do strony lewej.
Dobrze to rozumiem?

1 użytkowników online, w tym zalogowanych: 0, gości: 1