GNU Makfiles에서 매크로 정의 앞에 공백이있을 수 있습니까? 그리고 허용되는 공백의 종류 (탭, 줄 바꿈, 공백 ...)GNU Makefile 매크로 규칙
감사합니다! 검색을 많이 후
GNU Makfiles에서 매크로 정의 앞에 공백이있을 수 있습니까? 그리고 허용되는 공백의 종류 (탭, 줄 바꿈, 공백 ...)GNU Makefile 매크로 규칙
감사합니다! 검색을 많이 후
: GNU에서
만들 :
는 "A 변수 이름은 포함하지 않는 임의의 문자열이 될 수 있습니다 '', '#', '=', 또는 선행 또는 후행 공백. "
매크로는 매크로 이름 앞에 공백이있을 수 있습니다. 그것은 무시됩니다.
공백은 대부분의 경우 공백과 탭으로 구성 될 수 있습니다.
"규칙 컨텍스트"에있는 경우 줄의 첫 번째 문자는 Tab이 될 수 없습니다 (그렇다면 줄은 규칙 대신에 규칙의 래서 피의 일부로 간주됩니다) make 매크로 할당).
"규칙 컨텍스트"의 정의는 대부분의 사람들에게 놀라운 일입니다. 주석, 공백 행 및 취하지 않은 ifdef 섹션은 "규칙 컨텍스트"를 끝내지 않습니다 : 그 다음에 TAB로 시작하는 줄 여전히 이전 규칙의 일부로 간주됩니다. 새 매크로 할당 (또는 새 규칙)의 모양 만 이전 규칙을 끝냅니다. 그래서 예를 들면
:
이foo: bar
@cp $< [email protected]
# now we have some comments
ifeq (true,false)
BAR := and an assignment that is not parsed
endif
# and some more comments
FOO = and a macro starting with TAB + space
"FOO"의 마지막 할당 (여기에서 들여 쓰기를 가정하는 것은 TAB하지 공백으로 시작)는 규칙 맥락에서이며, "foo는"에 대한 조리법의 일부를 간주됩니다 새로운 매크로 할당이 아닙니다.
레시피 라인을 소개하지 않는 한 메이크 파일에서 TAB을 절대 사용하지 않는 것이 좋습니다.
사실, 변수 이름에는 할당 할 때 공백이없는 한 모든 문자가 포함될 수 있습니다 (예 :'name : = text with spaces','$ {name} : = text' _will_ work, '$ {공백이있는 텍스트}'는 적절하게 확장됩니다.) – bobbogo