다른 대상을 호출하려면 makefile에서 all을 사용하세요.

다른 대상을 호출하려면 makefile에서 all을 사용하세요.

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"가 다시 빌드되고 .liba.exeliblibc.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에 의존합니다 . 그렇지 않으면 둘 다 빌드됩니다. 빌드가 완료되면 소스 코드가 변경되지 않는 한 다시 빌드할 필요가 없습니다 ( ).libaclibsomecode

이것이 방법이다파일 생성작동하면서 종속성을 추적하고 의존하는 항목의 수정 시간이 대상보다 최신인 경우에만 무언가를 다시 빌드하면 됩니다.

관련 정보