나는 다른 프로젝트에서 상속된 혼란스러운 메이크파일 네트워크를 상속받았으며 메이크파일은 어디에나 포함되어 있습니다. 전체를 망가뜨리지 않고 간단한 변화를 주려고 노력 중입니다. (유혹적이긴 하지만 지금은 시간이 없습니다.)
gmake에서 완전한 makefile을 얻을 수 있는 방법이 있습니까?즉, 포함된 파일이 모두 포함되어 있나요? 나는 데이터베이스를 덤프하는 방법을 알고 있지만 로드되는 모든 불필요한 쓰레기만큼 따라가기가 어렵습니다.
답변1
다시 만들다매우 흥미로운 디버그 출력이 있습니다.
답변2
당신이 찾고 있는 것은 cc -E
for 와 동일합니다 make
. 나는 그런 동등한 것을 모른다. 외부 도구를 사용하면 많은 경우 도움이 되지만 모든 경우에 도움이 되는 것은 아닙니다.두 번째 확장.
하지만 어쩌면 이것이 한 걸음 더 가까워질 수도 있습니다. 초기 Makefile 끝에 다음 규칙을 추가합니다.
.PHONY: printMakefiles
printMakefiles:
echo $(MAKEFILE_LIST)
이제 다음을 실행하여 어떤 Makefile이 포함되어 있는지 확인할 수 있습니다.
make printMakefiles
조건부 포함이 있을 수 있으므로 100% 신뢰할 수는 없습니다.
답변3
이것이 재귀적으로 작동하는지 확실하지 않지만 다음과 같은 경우는 어떻습니까?
strace -e trace=open make | grep -i makefile
답변4
Makefile
통화중인 기본을 편집하십시오. 다음 줄을 끝에 추가하세요(또는 적어도 include
파일에 나타나는 마지막 줄 뒤):
$(info MAKEFILE_LIST == $(MAKEFILE_LIST))
make
이제 이 파일을 실행하면 Makefile
규칙을 전달하기 전에 포함된 파일 목록을 덤프합니다.