![다른 대상을 호출하려면 makefile에서 all을 사용하세요.](https://linux55.com/image/55420/%EB%8B%A4%EB%A5%B8%20%EB%8C%80%EC%83%81%EC%9D%84%20%ED%98%B8%EC%B6%9C%ED%95%98%EB%A0%A4%EB%A9%B4%20makefile%EC%97%90%EC%84%9C%20all%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%84%B8%EC%9A%94..png)
makefile
나는 아래와 같이 하나를 썼다 .
.PHONY: clean_lib all
a: lib
make [email protected]
c: lib
make [email protected]
clean_lib:
rm -f lib
all: a clean_lib c
호출할 때 "a" 대상이 a 를 빌드 한 다음 "정리" 하고 "c"를 호출하기를 make all
원합니다 . 그러면 "c"가 다시 빌드되고 .lib
a.exe
lib
lib
c.exe
a.exe
및 here 는 c.exe
빌드할 때만 빌드됩니다 lib
. 문제는 "clean" 후에 lib
"c"에 대해 다시 빌드하려는 항목이 빌드되지 않아
c.exe
빌드할 수 없다는 것입니다.
누구든지 나를 도와줄 수 있나요?
답변1
lib
왜 중간에 청소를 해야하는지 이해가 안가네요 . 청소하지 않고도 사용할 수 있을 것 같아요.
.PHONY: all
lib: somesource
make lib
a: lib
make [email protected]
c: lib
make [email protected]
all: a c
a
둘 다 빌드 하고 싶을 때마다 c
에 의존합니다 . 그렇지 않으면 둘 다 빌드됩니다. 빌드가 완료되면 소스 코드가 변경되지 않는 한 다시 빌드할 필요가 없습니다 ( ).lib
a
c
lib
somecode
이것이 방법이다파일 생성작동하면서 종속성을 추적하고 의존하는 항목의 수정 시간이 대상보다 최신인 경우에만 무언가를 다시 빌드하면 됩니다.