2012-09-25 2 views
4

가 난 그냥 대상 폴더에 파일을 복사 make install 원하는 간단한 메이크 프로젝트, 예를 구축하지 않으려면 (파일 복사)를 설치하기 "Nothing to be done for 'clean'", "Nothing to be done for 'all'"등의 모든 하나의 에코를 나타내는 모든 타겟을 빌드 할 수 있습니다 (예 : clean, all, install, my_custom_target 등). makefile 프로젝트는 적어도 빌드 될 것으로 예상합니다. C/C++ 파일 등).메이크 그냥, 어떤 대상이

누구도이 작업을 수행하는 방법에 대한 제안 사항이 있습니까?

감사합니다.

답변

6

이것은 make이 (는) 당신의 Makefile을 찾지 못하거나 정확하게 파싱 할 수 없음을 나타냅니다. 파일 이름이 무엇입니까?

또한 각 규칙 (예 : cp ./*.wav /usr/share/snd)의 명령 앞에는 공백이 아닌 실제 탭 문자가 접두사로 지정되어야합니다. 붙여 넣은 샘플에는 3 개의 공백이 접두어로 붙지 만 make의 경우 올바르게 구문 분석하려면 실제 탭 문자를 접두어로 사용해야합니다.

확인할 사항은 all, install 또는 my_custom_target의 파일이 있는지 여부입니다. make는 C 또는 C++ 파일이 빌드되었는지 여부에 상관하지 않습니다. 규칙은 당신이 원하는 무엇이든 할 수 있습니다. 그러나 규칙과 동일한 이름의 파일이 있는지 여부와 규칙의 종속성보다 최신인지 여부를 확인합니다. 파일이 있고 모든 종속성보다 새로운 경우 (또는이 예제와 같은 종속성이없는 경우)에는 아무 것도 할 수 없다고 결정합니다. 이를 피하기 위해 .PHONY 선언을 추가하여 이들이 가짜 타겟이며 빌드 할 실제 파일과 일치하지 않음을 나타냅니다. make은 같은 이름의 최신 파일이 있는지 여부에 관계없이 항상이 래서 피를 실행합니다.

.PHONY: all install my_custom_target