#makefile
#makefile
Вопрос:
В моем makefile есть следующий код:
S_RES=$(shell cat output)
echo -e "Serial result = t" $(S_RES)
В принципе, я хочу сохранить вывод команды командной строки cat output
в переменной S_RES, а затем отобразить эту переменную на экране (с некоторым пояснительным текстом перед ней). Я также хочу иметь возможность использовать переменную позже в моей программе. Я думал, что следовал инструкциям, приведенным в различных вопросах StackOverflow, но, похоже, это не работает.
Ответ №1:
Если разрешен простой пробел вместо escape-последовательности t
, а ваш make
код GNU make
равен $(info)
3.81 или выше, то он доступен.
Например:
$(info Serial result = $(S_RES))
Если ваша make
версия 3.80 или ниже, $(warning)
может соответствовать
назначение. Однако warning
также выводит номер строки и т.д.
РЕДАКТИРОВАТЬ: К вашему сведению, следующий makefile выводится abc
на моем GNU make 3.81.
A := $(shell echo abc)
$(info $(A))
Комментарии:
1. К сожалению, это, похоже, не работает. Я получаю распечатанный ‘Serial result =’, но не значение S_RES. Я предполагаю, что в первую очередь я правильно устанавливаю S_RES — это правильно?
2.Является ли ваш
make
GNU-make
? Если да, то какова версия? Пожалуйста, посмотрите правку.3. Я получаю следующий вывод: A: = abc make: A: Команда не найдена make: *** Ошибка 127 [test] И моя версия make — GNU Make 3.81
4. @robintw: Вы случайно не пытаетесь сделать это в рамках правила?
5. @robintw: Определенно. То, что написал Ise Wisteria, написано на «языке Make», но Make передает команды из правила в подоболочки, которые используют совсем другую грамматику. Если вы пытаетесь установить там переменную и использовать ее «позже в программе», я подозреваю, что вы неправильно понимаете, как работают makefile-ы и что означает «позже» в этом контексте. Возможно, вы могли бы отредактировать свой пост, чтобы показать код на месте и рассказать нам, что это за «программа».
Ответ №2:
просто дополнительное замечание
это зависит от времени использования, это столько раз, сколько используется $ (A)
A = something
это вычисляется во время синтаксического анализа, таким образом, значение вычисляется один раз
A := something