sunjob пишет:и все они пересекаются, могут вызываться как отдельно, так и в куче
sunjob пишет:про ссылки я в курсе, изучал их в свое время, ни чего подходящего там не нашел
Шерлок Холмс любил Ватсона подкалывать логическими пируэтами, но тут не нужно быть Холмсом... ты или от скуки спциально стебёшься(к чему я более склоняюсь), либо ... второй вывод тянет на нарушение правил форума, поэтому тот, кто прочитает сам достроит конструкт.
Что там не понять? Используй что хочешь, хоть объявленные переменные, хоть абстрактные цели.
BEEP_OK := $(shell paplay /usr/share/sounds/freedesktop/stereo/complete.oga)
BEEP_ERR := $(shell paplay /usr/share/sounds/freedesktop/stereo/dialog-warning.oga)
и вызывай где хочешь:
ifeq ($(err),)
${BEEP_OK}
else
${BEEP_ERR}
endif
ау уж как и что в err описывать - читай доки сам, или монетами плати, а то ныне развелось умников...
вот тебе пример для второго варианта)))0
define BEEP_OK
paplay /usr/share/sounds/freedesktop/stereo/complete.oga
endef
define BEEP_ERR
paplay /usr/share/sounds/freedesktop/stereo/dialog-warning.oga
endef
# err = error # если эта строка закоментирована программа компилируется и прозвучит BEEP_OK, если раскоментировать то прозвучит BEEP_ERR
ifeq ($(err),)
all:
g++ main.cpp -o hello
${BEEP_OK}
else
all:
${BEEP_ERR}
endif
При ссылке на упрощенно вычисляемую переменную делается простая подстановка ее значения (без каких-либо дополнительных вычислений).
Вот чуть более сложный пример, иллюстрирующей использование `:=' совместно с функцией shell. (Смотрите раздел Функция shell.) Этот пример также демонстрирует использование переменной MAKELEVEL, которая изменяется во время переходов "с уровня на уровень" при рекурсивном использовании make. Смотрите раздел Связь с make "нижнего уровня" через переменные.
ifeq (0,${MAKELEVEL})
cur-dir := $(shell pwd)
whoami := $(shell whoami)
host-type := $(shell arch)
MAKE := ${MAKE} host-type=${host-type} whoami=${whoami}
endif
" si contuderis stultum in pila quasi tisanas feriente desuper pilo non auferetur ab eo stultitia eius " © Proverbs 27:22