URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7734
[ Назад ]

Исходное сообщение
"Makefile/awk не могу понять в чём дело"

Отправлено vivo , 29-Ноя-08 14:28 
Добрый день!

Буквально только что начал разбираться с синтаксисом 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....
Что тут не так?

Спасибо!


Содержание

Сообщения в этом обсуждении
"Makefile/awk не могу понять в чём дело"
Отправлено phpcoder , 29-Ноя-08 14:35 
>Добрый день!
>
>Буквально только что начал разбираться с синтаксисом make/Makefile и сразу наткнулся на
>проблему.
>
>Вот синтетический пример для наглядности:
>
>$cat Makefile
>TEST_VAR1 := $(shell uname -a | awk '{print $1}')
>TEST_VAR2 := $(shell uname -a | cut -d\  -f2)

В первом случае используйте $$1 вместо $1.

Ну и команды у вас разные столбцы выводят -- первый и второй.



"Makefile/awk не могу понять в чём дело"
Отправлено vivo , 29-Ноя-08 15:07 
>В первом случае используйте $$1 вместо $1.
>
>Ну и команды у вас разные столбцы выводят -- первый и второй.
>

Спасибо! Ошибка сразу стала понятна :)
http://www.gnu.org/software/make/manual/html_node/Variables-...

Столбцы действительно разные, прошу прощения, опечатался.

Удачи!