포함된 모든 makefile의 목록을 gmake에서 얻으려면 어떻게 해야 합니까?

포함된 모든 makefile의 목록을 gmake에서 얻으려면 어떻게 해야 합니까?

나는 다른 프로젝트에서 상속받은 메이크파일 네트워크의 엉망진창을 물려받았고, 메이크파일은 여기저기에 포함되어 있었습니다. 나는 모든 것을 무너뜨리지 않고 간단한 변화를 시도하고 있습니다(그렇지만 지금은 시간이 없습니다).

gmake에서 전체 메이크파일을 동축으로 만들 수 있는 방법이 있나요?, 포함된 모든 파일이 이미 포함되어 있습니까? 나는 데이터베이스를 덤프하는 방법을 알고 있지만 로드되는 모든 외부 정크를 따라가는 것은 거의 어렵습니다.

답변1

다시 만들다매우 흥미로운 디버그 출력이 있습니다.

답변2

cc -E당신이 찾고 있는 것은 for 와 동일합니다 make. 나는 그러한 동등한 것을 알지 못합니다. 외부 도구를 사용하면 많은 경우에 도움이 되지만 모든 경우에 도움이 되는 것은 아닙니다.2차 확장.

하지만 어쩌면 이것이 한 걸음 더 가까워질 수도 있습니다. 초기 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규칙을 전달하기 전에 포함된 파일 목록을 덤프합니다.

관련 정보