다음과 같은 오류가 발생합니다 make
.
Makefile:168: *** missing separator. Stop.
이 원인은 무엇입니까?
답변
온라인 매뉴얼에 표시된대로 해당 오류의 가장 일반적인 원인은 make
탭 문자를 예상 할 때 공백으로 줄이 들여 쓰기되기 때문 입니다.
옳은
target:
\tcmd
\t
탭은 어디에 있습니까 (U + 0009)
잘못된
target:
....cmd
여기서 각각 .
은 SPACE (U + 0020)를 나타냅니다.
답변
미소를 위해, 다른 누군가가 비슷한 오류가 발생하는 경우 :
함수를 정의하는 규칙을 호출했기 때문에 악명 높은 “missing separator”오류가 발생했습니다.
($eval $(call function,args))
오히려
$(eval $(call function,args))
즉 ($
오히려 $(
.
답변
이것은 Makefile의 구문 오류입니다. 파일 자체 또는 관련 부분을 보지 않고는 그보다 더 구체적이기는 매우 어렵습니다.
답변
나에게 문제는 여러 줄 변수 정의에 줄 끝 # ...
주석이 포함되어 있다는 것 define ... endef
입니다. 주석을 제거하면 문제가 해결되었습니다.
답변
내 오류는 여러 줄 확장명이있는 변수 선언 줄에있었습니다. “\”뒤에 후행 공백이있어서 유효하지 않은 줄 연속이되었습니다.
MY_VAR = \
val1 \ <-- 0x20 there caused the error.
val2
답변
내 경우에는 다음에 오류가 발생했습니다. 전 세계적으로, 즉 대상 외부에서 명령을 실행하려고했습니다.
UPD. 명령을 전체적으로 실행하려면 올바르게 구성해야합니다. 예를 들어 명령
ln -sf ../../user/curl/$SRC_NAME ./$SRC_NAME
될 것입니다 :
$(shell ln -sf ../../user/curl/$(SRC_NAME) ./$(SRC_NAME))
답변
필자의 경우 :
에서처럼 콜론 이 누락되어 동일한 오류가 발생 했습니다 staging.deploy:
. 따라서 구문 오류가 쉽게 발생할 수 있습니다.