Печать переменной из Makefile

#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