2011-10-11 4 views
1

우리는 파일 만들기와 함께 작업하고 Makefile 구문을 확인하기 위해 HG에서 사전 커밋 확인을 만들고 싶습니다. 원래, 우리의 검사가 단지 그러나Make의 구문을 확인하지만 어떻게 실행하지 않는지 어떻게 알 수 있습니까?

make -n FOO.mk 

될 거라고, 우리는 메이크 구문이 정확하지만 설정하는 몇 가지 환경 변수를 필요한 경우, 테스트가 실패 할 수 있음을 깨달았다.

아이디어가 있으십니까? 우리의 기본값은 일반적인 Makefile 실수의 제한된 하위 집합을 확인하기 위해 자체 Python 스크립트를 작성하는 것입니다.

우리는 GNUmake를 사용하고 있습니다.

답변

2

makefile을 환경 변수에 의존하는 것은 좋지 않습니다. 정확하게 당신이 언급 한 문제 때문입니다.

Variables from the Environment:

는 ... 환경에서 변수를 사용하지 않는 것이 좋습니다. makefile이 자신의 통제 범위 밖에서 설정된 환경 변수에 대한 그들의 기능에 의존하는 것은 현명하지 않습니다. 왜냐하면 다른 사용자가 동일한 makefile에서 다른 결과를 얻게 될 것이기 때문입니다. 이것은 대부분의 makefile의 전체 목적에 위배됩니다.

+1

"투표 확인을위한 문법을 ​​어떻게 확인합니까?" –

-1

레서피의 환경 변수에 대한 참조는 '$ [$] [$] [패턴] 또는 [$] [$] 패턴에 대한 참조를 찾기가 쉽지 않으므로 $$ 접두사가 필요합니다. [AZ]는 직접적인 참고 문헌을 찾을 것입니다. 아주 간단한 펄 필터 (sed 스크립트)는 그것들을 모두 찾습니다.

간접적 인 것들을 찾으려면 PATH 세트와 HOME만으로 제조법을 시도해보고/home/bin/null로 설정하고 SHELL을/bin/false로 설정하십시오. Make의 매크로 SHELL은 환경 변수 $ SHELL이 아니므로, 실행할 레시피를 얻을 수 있으므로 레서피 파일에서 SHELL =/bin/sh을 설정하여 레시피에서 명령을 실행해야합니다. 그것은 의존성을 찾는 데 도움이되는 충분한 데이터를 흔들어야합니다.

결과에 대해 취하는 조치는 다른 문제입니다.

+0

"투표 확인을위한 문법을 ​​어떻게 확인합니까?" –

관련 문제