Makefile에서 중간 파일을 올바르게 사용하는 방법은 무엇입니까?

Makefile에서 중간 파일을 올바르게 사용하는 방법은 무엇입니까?

다음 시나리오를 고려해보세요.

tempfile: bar
    generate tempfile (using bar)

foo: tempfile
    generate foo (using bar)

문제는 다음과 같습니다. 를 foo사용하여 생성됩니다 tempfile. tempfile은 빌드 전용입니다 foo. 또한 에서 얻은 일부 데이터(임시 파일 아님)가 tempfile포함되어 있으므로 변경될 때마다 임시 파일도 변경되어 영향을 받습니다 .barbarfoo

이제 런타임에는 변경될 때만 빌드 make foo하고 싶습니다 . 실제로 일어나는 일은 Make가 임시 파일(나 자신은 상관하지 않음)을 삭제한 다음 아무것도 변경되지 않았 더라도 매번 foo를 빌드한다는 것입니다 .foobarbar

어떤 제안이 있으십니까?

답변1

foo이것이 필요한 전부 라면 전제 조건을 bar삭제할 수 있습니다 .tempfile

foo: bar
        generate foo (using bar)

foo필요한 경우 (GNU) Make에게 보관 tempfile하고 중간 파일로만 사용하도록 tempfile요청할 수 있습니다.소중한 것으로 표시하세요:

.PRECIOUS: tempfile

tempfile: bar
        generate tempfile

foo: tempfile
        generate foo

필요한 경우 또 다른 가능성은 이를 별도의 대상 tempfile으로 처리하지 않는 것입니다 .tempfile

foo: bar
        generate tempfile
        generate bar

관련 정보