Вы фактически присваиваете значение SVN_REV в подоболочке, заключенной в конце строки,
что вы, вероятно, хотите:
svnversion:: SVN_REV=$(shell svnversion -cn | sed -e 's/.*://' -e 's/\([0-9]*\).*/\1/' | grep '[0-9]')
svnversion:
$(info svn_rev = $(SVN_REV))
Устанавливает переменную при установке цели.
Если это не то, что было задумано, скажем, вы хотите выполнить некоторую обработку с переменной, тогда вам нужно сделать каждую строку продолжением предыдущей, используя ужасную ; \
в конце семантики строки. Если вы затем ссылаетесь на переменные оболочки (например, вычисленные в первой строке), вам нужно использовать синтаксис $$
перед именем переменной
1012 *, например *
svnversion:
SVN_REV=$(shell svnversion -cn | sed -e 's/.*://' -e 's/\([0-9]*\).*/\1/' | grep '[0-9]'); \
echo svn_rev = $$SVN_REV
но поскольку она находится в оболочке, вы не можете использовать переменную в команде $(info
, поскольку это происходит вне оценки цели.