Makefile의 "허위"규칙이 대상인으로 ".PHONY"인 이유는 아직도 이해할 수 없습니다. 그것은 훨씬 더 논리적 일 것입니다 전제 조건.왜 .PHONY : 목표가 아닌 대상 : .PHONY?
이 부분을 자세히 설명해야합니까? A
이 B
이고, B
이 가짜 인 경우 A
도 허위입니다. 따라서 종속 그래프 .PHONY
← B
→ A
은 .PHONY
→ B
→ A
보다 놀랍습니다. (또 다른 논거는 make
의 구현이 .PHONY
대상을 매우 특별하게 처리해야한다는 것입니다.)
이 비평은 오히려 이론적으로 (무의미하게) 보일 수도 있지만 - "make는 너무 고대 적이기 때문에 구문이 그대로 남아 있습니다".
은 GNU와는 (적어도) 확인, 다음 메이크가 target_A
가짜 선언 :이 너무입니다 :
target_A: _PHONY
touch target_A
_PHONY:
#noop
질문 1는하지만 구문의 변화를 제안하고 있지 않다, 대안이 간단하고 깨끗한, 분명히 나는 그 첫 번째 발명가가 아닙니다. 사실,이 대안을 고려하면 make
에 특수 구문이 필요한 이유는 무엇입니까?
이것은 초보자가 의심 할 때 wildcards in phony targets에 대한 질문을 매우 훌륭하게 해결하고 심지어 shed some light on .PHONY's meaning 일 수도 있습니다.
질문 2 : 이 접근법이 열악한 환경을 생각해 볼 수 있습니까? (? 어떤 사용의 make .PHONY
를 호출하는)
은 (내가 다른 make
의 호출 반면, GNU 만들 언급해야하는 것은 내가 어떤 경험을 가지고있는 유일한 구현 -. 읽기와 메이크 파일을 작성)를
(RTFM을 가지고 있어야 함) GNU Make 매뉴얼은 실제로 [이 제조법에 대해 언급합니다] (http://www.gnu.org/software/make/manual/html_node/Force-Targets.html#Force- Target)를 효율적이면서 더 휴대 가능합니다. 나는 속도 증가가 무시할 수 없다고 추측한다. 이것은 질문 2에 대한 부정적인 대답을 제시합니다. (?) – tiwo