2014-01-07 1 views
1

I 해요 다음 메이크 쓰기 : 내가 가지고있는 make 명령 후대상 및 의존성이 모두 동일한

TARGET=fmake 
TARGET2=test_second 
f:f 
    echo Some text 
clean: 
    rm -f fmake test_second 
CC=$(VAR2) 
VAR2=gcc 

:

make: Circular f <- f dependency dropped. 
echo Some text 
Some text 

make: Circular f <- f dependency dropped.을 무슨 뜻인가 그것을 사실

f:f 
    echo Some text 

과 동일합니다.
f: 
    echo Some text 

답변

2

아니요, f: ff:과 동일하지 않습니다. 후자는 다른 파일에 의존하지 않는 목표 인 f을 정의합니다. 전자는 파일 f (동일한 파일)에 의존하는 목표 f을 정의합니다.

f은 자체적으로 업데이트 할 수 없으므로 불가능한 상황입니다. f이 빌드되기 전에 make는 해당 전제 조건 인 f을 빌드하려고합니다. 그러나 사전 요구 사항 f을 만들기 전에 전제 조건 인 f을 만들어야합니다. 그리고 그것이 건설 될 수 있기 전에는 전제 조건 인 f을 만들어야합니다. 기타 등등.

일 수있는 다른 것들이이 불가능한 상황을 찾으면 할 수 있습니다. 예를 들어, 오류 코드로 실패 할 수 있습니다.

대신에 무엇을 할 것인가는 재귀를 피하기위한 필수 조건을 버리는 것입니다. 그것이 당신이 보는 경고 메시지입니다.

그래서 그들은 같은 것이 아니다 그냥 f 인 것처럼 f:f 치료까지 끝나지 않습니다 확인 있지만 효과인치

관련 문제