"질문 모드"의 재귀 호출을 실행하려고하는데 매우 독특한 시나리오에서 오류가 발생합니다.메이크 파일 재귀 -q 모드 오류 1
MAKE 3.81을 사용하고 있으며 완전히 다른 두 환경에서 테스트를 마쳤습니다.
"make -q"를 호출하면 makefile은 "$ (MAKE) -C sub/a /"를 호출하고 makefile은 "$ (MAKE) -f ../../makefile.b"
테스트 케이스는 내가 할 수있는만큼 간단합니다. 하위 프로젝트는 그래서 다시 컴파일해야하는 경우
makefile:
a:
$(MAKE) -C sub/a
sub/a/makefile:
b:
$(MAKE) -f ../../makefile.b
makefile.b:
all:
echo hi
이 운동의 요점 확인 할 수 있습니다 : 여기
nachum:/home/nachum/makefile_bug[1497]$make -q
make -C sub/a
make[1]: Entering directory `/home/nachum/makefile_bug/sub/a'
make -f ../../makefile.b
make[1]: *** [b] Error 1
make[1]: Leaving directory `/home/nachum/makefile_bug/sub/a'
make: *** [a] Error 2
nachum:/home/nachum/makefile_bug[1498]$
는 메이크입니다 :이 오류가 왜 누군가가 말해 줄 수 필요한 경우 최상위 레벨 프로젝트를 적절하게 구축 할 수 있습니다. 그렇지 않으면 모든 것에 타임 스탬프를 사용해야합니다. (나는 이전에 타임 스탬프를 사용했지만, 다른 것들에 대해 혼란을 야기한다는 것을 깨달았습니다.)
이 문제에 대한 몇 가지 기묘한 해결 방법이 있습니다. A (에서 메이크)의 제조법 $ 호출 위의 추가 라인을 가지고 예를 들어, (MAKE), 즉 :
makefile:
a:
@echo hi
$(MAKE) -C sub/a
문제는 사라지고, AND (내 전체 테스트 케이스에) 종속 여전히 작동 . 또한 make를 직접 사용하면 ($ (MAKE)와 반대로) 동작을 변경하는 것처럼 보입니다.
도움을 주시면 감사하겠습니다. 감사합니다. Nachum
소리가 버그와 같은가요? – nachum
또는 이유가있을 수 있습니다. 아직 조사 할 필요가 있습니다. :) –