2012-03-15 4 views

답변

0

: GNU에서

만들 :

는 "A 변수 이름은 포함하지 않는 임의의 문자열이 될 수 있습니다 '', '#', '=', 또는 선행 또는 후행 공백. "

+0

사실, 변수 이름에는 할당 할 때 공백이없는 한 모든 문자가 포함될 수 있습니다 (예 :'name : = text with spaces','$ {name} : = text' _will_ work, '$ {공백이있는 텍스트}'는 적절하게 확장됩니다.) – bobbogo

5

매크로는 매크로 이름 앞에 공백이있을 수 있습니다. 그것은 무시됩니다.

공백은 대부분의 경우 공백과 탭으로 구성 될 수 있습니다.

"규칙 컨텍스트"에있는 경우 줄의 첫 번째 문자는 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을 절대 사용하지 않는 것이 좋습니다.