Я пишу відповідь, щоб збільшити видимість власне синтаксису, який вирішує проблему. На жаль, те, що хтось може сприймати як тривіальне, може стати дуже значним головним болем для того, хто шукає просту відповідь на розумне запитання.
Помістіть наступне у файл "Makefile".
MY_VAR := $(shell python -c 'import sys; print int(sys.version_info >= (2,5))')
all:
@echo MY_VAR IS $(MY_VAR)
Поведінка, яку ви хотіли б бачити, полягає в наступному (якщо припустити, що у вас встановлений останній пітон).
make
MY_VAR IS 1
Якщо ви скопіюєте та вставте вищезазначений текст у Makefile, ви отримаєте це? Напевно, ні. Ви, ймовірно, отримаєте помилку, як, наприклад, повідомлення про це тут:
makefile: 4: *** пропущений роздільник. Стій
Чому: Тому що, хоча я особисто використовував справжню вкладку, переповнення стека (намагаючись бути корисним) перетворює мою вкладку в ряд пробілів. Ви, засмучений громадянин Інтернету, тепер скопіюйте це, думаючи, що у вас зараз той самий текст, що і я. Команда make, тепер зчитує пробіли і виявляє, що команда "all" неправильно відформатована. Тож скопіюйте текст, поданий вище, вставте його, а потім перетворіть пробіл перед "@echo" на вкладку, і цей приклад, нарешті, сподіваємось, спрацює для вас.