Прежде чем мы сможем помочь вам, вы должны показать нам, как вы используете эту переменную temp
, которую вы определили.Просто показ содержимого этой переменной не поможет.
Я ожидаю, что вы пытаетесь использовать переменную внутри рецепта, например:
foo:
$(temp)
Вы не можете сделатьчто: содержимое рецепта должно быть сценарием оболочки;рецепты передаются в оболочку для выполнения.Содержимое temp
, как вы его определили, содержит конструкции makefile, о которых оболочка ничего не знает, следовательно, ваша синтаксическая ошибка из оболочки.
Кроме того, каждая строка в рецепте передаетсяотдельная оболочка, поэтому ваша строка env FOO = bar
не имеет никакого эффекта: после того, как эта строка была вызвана, оболочка закрывается и все изменения в ее среде теряются.
Вашего примера здесь недостаточно, чтобы мы порекомендовали работоспособную стратегию: вы не сказали нам, чего хотите достичь.
ETA Мой ответ выше все еще верен.Похоже, вы пытались преобразовать переменную в синтаксис сценария оболочки для оператора if, но не завершили работу: ifeq
это синтаксис make-файла, а не синтаксис оболочки.В оболочке вы должны использовать if
.Как это:
@if [ '$(MACH)' = x86_64 ]; then ...
Однако, пожалуйста, перечитайте мой комментарий выше о настройке переменной среды ... рецепт, который вы здесь показали, не будет действовать вообще, даже если у него больше нет синтаксисаошибки.