기술 · 실용 가이드
make의 “No rule to make target”? 다시 빌드하기 전에 누락 노드를 추적하세요
이 오류는 의존성 그래프에서 찾거나 만들 수 없는 노드를 가리킵니다. 로드된 Makefile, 확장된 이름, 파일 실체와 규칙 검색을 먼저 고정하세요.

메시지는 make가 찾거나 만들 수 없었던 첫 의존성 그래프 노드를 알려 줍니다. 정확한 철자와 이를 만든 Makefile·변수를 보존하고, 전체 빌드 트리가 아니라 끊어진 한 간선만 고칩니다.
요청 goal 부재, prerequisite 파일 부재, 확장 경로 오류, 명시적·암시적 규칙 부재가 같은 증상을 만들 수 있습니다.
1. 첫 그래프 실패를 고정
재귀 make 단계와 정확한 인용 이름을 포함한 첫 전체 진단을 저장합니다. pwd -P, 명령, make --version, MAKEFLAGS와 할당을 기록합니다. 생성 의존 파일과 실패 순서가 증거이므로 먼저 make clean을 실행하지 않습니다.
“needed by”가 없으면 명령줄 goal 자체, 있으면 부모에서 누락 노드로 향하는 한 간선으로 분류하고 그 가지부터 추적합니다.
2. 로드된 Makefile과 이름 증명
GNU make -pn 같은 읽기 전용 데이터베이스 또는 디버그 출력으로 실제 읽은 Makefile을 보존합니다. 재귀 빌드는 entering-directory도 기록해 자식 make의 다른 트리와 변수를 구분합니다.
데이터베이스와 원본 Makefile에서 누락 문자열과 부모를 찾고 명령줄/환경 override, include, VPATH, 생성 fragment와 설정 출력을 확인합니다. 빈 이름이나 이상한 공백은 byte 표시로 봅니다.
3. 기억이 아니라 파일 객체 검사
실패한 make의 디렉터리에서 확장된 정확한 경로를 stat, readlink, 대소문자 구분 목록으로 확인합니다. 깨진 symlink, 이름 변경, case 차이, 초기화 안 된 submodule, 오래된 절대 library 경로를 구분합니다.
생성 노드라면 generator, feature gate와 출력을 선언한 rule을 찾습니다. 빈 placeholder를 만들면 잘못된 bytes로 빌드가 진행되어 실행되지 않은 producer를 숨길 수 있으므로 피합니다.
4. 규칙 검색 경계 증명
기존 source면 path를 고치거나 검토된 파일을 복원합니다. 생성 노드면 명시 rule, stem을 가진 유효 pattern 또는 적용 가능한 inference rule과 prerequisite를 입증합니다.
문자 그대로의 %, 빈 변수, 비활성 shared-library 옵션, 생성 Makefile을 별도 분기로 봅니다. 다른 도구가 만든 트리는 원본 설정을 고쳐 재생성하고 일회성 Makefile을 손대지 않습니다.
5. 한 간선만 고치고 승인 재생
이름 하나 수정, source 하나 복원, generator 하나 활성화, 의존성 하나 갱신, 검토 설정에서 재생성 중 최소 변경을 선택하고 기존 metadata를 보존합니다.
같은 디렉터리와 환경에서 원래 명령을 다시 실행합니다. 의도한 rule이 노드를 찾거나 만들고 부모가 진행하며 두 번째 no-op/증분 실행이 안정적일 때 전후 database, 파일 identity와 artifact 확인을 저장합니다.
