LINUX.ORG.RU

GNU make: не работает ':='

 , ,


0

1

Имеется makefile:

all: bin lib

X := BIN
bin:
        @echo 'Hello $(X)'

X := LIB
lib:
        @echo 'Hello $(X)'

Вывод:

Hello LIB   <--- а мечтался BIN
Hello LIB

ЧЯДНТ?

Проблему поймал когда попытался заюзать временные переменные внутри define ... endef, который потом подавался на вход $(eval $(call ...)). Т.е. исходный вопрос на самом деле ещё замороченнее: как юзать временные переменные внутри таких вот самодельных «функций»?

★★★★★

https://www.gnu.org/software/make/manual/html_node/Target_002dspecific.html

Читаем про Target-specific Variable Values

Или, если вкратце:

pinkbyte@oas1 ~/dev/1 $ cat Makefile
all: bin lib

bin:    X = BIN
bin:
        @echo 'Hello $(X)'

lib:    X = LIB
lib:
        @echo 'Hello $(X)'

pinkbyte@oas1 ~/dev/1 $ make
Hello BIN
Hello LIB
Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)