내 주요 Makefile 호출 config.mk
include $(TOPDIR)/config.mk
그런 다음 config.mk에는 다음과 같은 문장이 포함됩니다.
ifdef CPU
sinclude $(TOPDIR)/cpu/$(CPU)/config.mk
endif
ifdef SOC
sinclude $(TOPDIR)/cpu/$(CPU)/$(SOC)/config.mk
endif
이 두 트리와 필요한 config.mks를 준비했습니다. 그러나 가치가 "다목적"인 "SOC"에게는 문제가있다. 여기에 "다용도"를 직접 넣으면 파일을 찾을 수 있고 모든 것이 정상입니다. 하지만 $ (SOC)를 사용하면 오류가 발생하고
/../../../cpu/arm926ejs/versatile: is a folder, stop
누구든지 문제가 무엇인지 알고 있습니까 ??
정확한 오류 메시지를 제공 했습니까? 어떤 버전의 make를 사용하고 있습니까? 이 오류는 GNU가 인쇄하는 것처럼 보이지 않습니다.
어쨌든, 문제는 SOC
변수 할당에 후행 공백 이 있다는 것 입니다. 의 POSIX 정의에 따르면 make
변수 값 이전의 선행 공백은 제거되지만 후행 공백은 유지 됩니다. 예를 들어 다음과 같이 makefile을 작성하면 다음과 같습니다.
SOC = versatile # this is the versatile SOC
그런 다음 make는 주석을 제거하지만 공백은 유지 하므로 값은 ' versatile
'(끝에 공백)이됩니다. 즉, 값이 sinclude
줄 에서 확장되면 다음과 같이 표시됩니다.
sinclude $(TOPDIR)/cpu/$(CPU)/versatile /config.mk
make는 두 개의 다른 값을 포함하려는 것으로 해석되며, 그중 첫 번째는 디렉토리입니다.
주석이 없더라도 후행 공백이 유지됩니다. 메이크 파일을 편집 할 때 후행 공백을 표시하거나 자동으로 제거하는 모드로 편집기를 설정해야합니다. 예를 들어 GNU Emacs는 이것을 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다