Как указано в интерактивном руководстве , наиболее распространенной причиной этой ошибки является то, что строки имеют отступы, когда makeожидаются символы табуляции.
Для меня проблема заключалась в том, что у меня были некоторые # ...комментарии в конце строки, встроенные в определение define ... endefмногострочной переменной. Удаление комментариев заставило проблему уйти.
Спасибо. Я не знал, что комментарии в defineдирективе трактуются буквально. На самом деле поведение не объясняется в документации . (Для ясности: Встраивание номер знака #. В директиве не сама ошибка синтаксиса Но это просто не интерпретируется как начало комментария, таким образом , что, по общему признанию ошибок.)
YNN
3
Моя ошибка была в строке объявления переменной с многострочным расширением. У меня есть завершающий пробел после "\", который сделал это недопустимым продолжением строки.
MY_VAR = \
val1 \ <-- 0x20 there caused the error.
val2
В моем случае была вызвана та же ошибка, потому что двоеточие :отсутствовало в конце, как в staging.deploy:. Так что учтите, что это может быть легкой синтаксической ошибкой.
У меня был пропущенный файл-разделитель в файлах Makefile, сгенерированных qmake. Я портировал код Qt на другую платформу. У меня не было ни QMAKESPEC, ни MAKE. Вот ссылка, на которую я нашел ответ:
Так что, очевидно, все, что мне было нужно - это пакет build-essential, затем autoconfсначала запустить , что сделало Makefile.pre.in, потом ./configureто, makeчто работает отлично ...
Ответы:
Как указано в интерактивном руководстве , наиболее распространенной причиной этой ошибки является то, что строки имеют отступы, когда
make
ожидаются символы табуляции.Верный
где
\t
ТАБ (U + 0009)Неправильно
где каждый
.
представляет пробел (U + 0020).источник
Просто ради ухмылки, и в случае, если кто-то еще столкнется с подобной ошибкой:
Я получил печально известную ошибку «отсутствует разделитель», потому что я вызвал правило, определяющее функцию как
скорее, чем
то есть,
($
а не$(
.источник
0x20
"места" там, это правильно?$
Это синтаксическая ошибка в вашем Makefile. Довольно сложно быть более конкретным, не видя самого файла или его соответствующих частей.
источник
Для меня проблема заключалась в том, что у меня были некоторые
# ...
комментарии в конце строки, встроенные в определениеdefine ... endef
многострочной переменной. Удаление комментариев заставило проблему уйти.источник
define
директиве трактуются буквально. На самом деле поведение не объясняется в документации . (Для ясности: Встраивание номер знака#
. В директиве не сама ошибка синтаксиса Но это просто не интерпретируется как начало комментария, таким образом , что, по общему признанию ошибок.)Моя ошибка была в строке объявления переменной с многострочным расширением. У меня есть завершающий пробел после "\", который сделал это недопустимым продолжением строки.
источник
В моем случае ошибка вызвала следующее. Я пытался выполнять команды глобально, т.е. вне какой-либо цели.
UPD. Чтобы выполнить команду глобально, нужно правильно сформировать. Например, команда
станет:
источник
В моем случае была вызвана та же ошибка, потому что двоеточие
:
отсутствовало в конце, как вstaging.deploy:
. Так что учтите, что это может быть легкой синтаксической ошибкой.источник
В моем случае я фактически пропустил вкладку между ними
ifeq
и команду на следующей строке. Там не было пробелов с самого начала.Должно было:
Обратите внимание, что
<tab>
это фактический символ табуляцииисточник
В моем случае эта ошибка была вызвана отсутствием свободного места. У меня было это, если блок в моем make-файле:
который должен был быть:
с пробелом после if.
источник
У меня был пропущенный файл-разделитель в файлах Makefile, сгенерированных qmake. Я портировал код Qt на другую платформу. У меня не было ни QMAKESPEC, ни MAKE. Вот ссылка, на которую я нашел ответ:
https://forum.qt.io/topic/3783/missing-separator-error-in-makefile/5
источник
Так что, очевидно, все, что мне было нужно - это пакет build-essential, затем
autoconf
сначала запустить , что сделалоMakefile.pre.in
, потом./configure
то,make
что работает отлично ...источник
Следующий код Makefile работал:
источник