[makefile] 오류 만들기 : 구분 기호 누락

다음과 같은 오류가 발생합니다 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:. 따라서 구문 오류가 쉽게 발생할 수 있습니다.