Добрый день!Буквально только что начал разбираться с синтаксисом make/Makefile и сразу наткнулся на проблему.
Вот синтетический пример для наглядности:
$cat Makefile
TEST_VAR1 := $(shell uname -a | awk '{print $1}')
TEST_VAR2 := $(shell uname -a | cut -d\ -f2)
show:
@echo "TEST_VAR1: $(TEST_VAR1)"
@echo "TEST_VAR2: $(TEST_VAR2)"По идее, значения переменных TEST_VAR1 и TEST_VAR2 должны получаться одинаковыми, потому что будучи выполнеными в командной строке эти конструкции дают один и тот же результат:
$uname -a | awk '{print $2}'
home
$uname -a | cut -d\ -f2
homeОднако:
$make show
TEST_VAR1: Linux home 2.6.24-22-generic #1 SMP Mon Nov 24 18:32:42 UTC 2008 i686 GNU/Linux
TEST_VAR2: homeТ.е. не отрабатывает часть с awk....
Что тут не так?Спасибо!
>Добрый день!
>
>Буквально только что начал разбираться с синтаксисом make/Makefile и сразу наткнулся на
>проблему.
>
>Вот синтетический пример для наглядности:
>
>$cat Makefile
>TEST_VAR1 := $(shell uname -a | awk '{print $1}')
>TEST_VAR2 := $(shell uname -a | cut -d\ -f2)В первом случае используйте $$1 вместо $1.
Ну и команды у вас разные столбцы выводят -- первый и второй.
>В первом случае используйте $$1 вместо $1.
>
>Ну и команды у вас разные столбцы выводят -- первый и второй.
>Спасибо! Ошибка сразу стала понятна :)
http://www.gnu.org/software/make/manual/html_node/Variables-...Столбцы действительно разные, прошу прощения, опечатался.
Удачи!