w instrukcji:W jaki sposób można użyć funkcji eval w makefile?
Funkcja eval jest bardzo szczególny: to pozwala na definiowanie nowych konstruktów makefile, które nie są stałe; które są wynikiem oceny innych zmiennych i funkcji. Argument funkcji eval jest rozszerzany, a następnie wyniki tego rozszerzenia są analizowane jako składnia pliku Makefile .
Należy zdać sobie sprawę, że argument eval został dwukrotnie rozwinięty; najpierw przez funkcję eval, a następnie wyniki tego rozszerzenia są ponownie rozwinięte, gdy są parsowane jako składnia makefile. Oznacza to, że użytkownik może potrzebować dodatkowych poziomów ucieczki dla znaków "$" przy użyciu eval.
"Rozwija dwa razy" wprowadza mnie w błąd.
na przykład utworzyć makefile:
define func
tmp = $(OBJPATH)/$(strip $1)
objs += $$(tmp)
$$(tmp) : $2
gcc $$^ -o [email protected]
endef
all : foo
$(eval $(call func, foo, 1.c))
jak będzie funkcja eval zostać rozszerzony?
"Jak rozszerzona zostanie funkcja ewaluacji?" Próbowałeś tego? – Beta