2012-05-10 2 views
1
나는 다음과 같은 메이크 갖고 싶어

:가상 메이크 목표

a: b 

b: c 
    touch b 

c: 
    # time consuming task that only needs to run once 

b이 이미 존재하는 경우 종속성 체인을 중지 할 수있는 방법이 있나요를? 다시 c의 재실행을 유발하기 위해 b을 제거하기 위해 수동으로 청소해도 괜찮습니다. b이 있으면 c을 트리거하지 않고 a을 여러 번 실행할 수 있기를 원합니다.

저는 c과 같은 많은 작업을 수행하므로 별도의 작업마다 파일을 건드리지 않으려하고 파일 시스템에 불필요한 파일이 쌓이지 않도록하고 싶습니다. 무조건 당신의 작업을 호출합니다

a: b 

b c: 
    # time consuming task that only needs to run once 
    touch b 

make c :

+0

버전을 실행? – Beta

+0

GNU Make 3.81입니다. –

+0

당신은'c'의 실행이'b'의 존재 여부에 달려 있다고 말합니다. 또한 "나는'c'와 같은 많은 작업을하므로 별도의 작업마다 파일을 건드리지 않으려 고하며 파일 시스템에 불필요한 파일이 쌓이지 않게하고 싶습니다."라고 말합니다. 이것은 모순처럼 보입니다. – Beta

답변

3

당신은 귀하의 Makefile을 작성할 수 있습니다.

make b은 파일 b가없는 경우에만 작업을 실행합니다.

make a

는 B에 따라 달라집니다, 그래서 B는 존재하지 않는 경우 작업은, 확인의

+0

예를 들어'a'를 5 번 실행하면'b' 만 한 번 실행하면됩니다. –

+0

질문을 분명히해야한다고 생각합니다. "make a"를 5 번 호출하면 위의 스크립트에서 한 번만 실행되는 "시간 소모적 인 작업"이 발생합니다. – mirk

+0

상황을 좀 더 명확히하려고 노력했습니다. –