2013-08-22 3 views
0

환경 변수의 존재 여부에 따라 특정 규칙을 실행해야한다는 요구 사항이 있습니다. 내가 make run 할 경우 환경 변수가 RUN_ONLY_TEST1이 쉘에 설정되지 않은 말한다면Makefile 조건부 규칙 실행

test1: 
    -echo "test1" 

test2: 
    -echo "test2" 

run: 
    -echo "Running" 

그래서 내 요구 사항은 실행해야 다음, 규칙 test1test2 모두이다. 그러나이 환경 변수가 설정되면 test1 규칙 만 실행해야합니다.

실현 가능한 경우 도와 줄 수 있습니까? 이것은 단지 예제이고 나는 원래의 makefile에 많은 명령을 가지고 있습니다, 그래서 실행 목표에 if/else를 넣는 것은 많은 중복을 필요로합니다.

답변

1

RUN_ONLY_TEST1을 암시하는 또 다른 방법은 RUN_NOT_TEST2345입니다. 나는. 당신은 구현하기가 약간 어려운, 부정적인 문제 진술을 만들었습니다. 왜냐하면 그것은 많은 예외를 의미하기 때문입니다.

나는 긍정적 인 접근을 위해 갈 것

는 가장 쉬운 테스트의 목록이 실행되고 : makepp에서

TESTS = 1 2   # Can override this on command line or environment 

당신은 당신의 마지막 규칙을 작성할 수 있습니다 단순히 : gmake가에서

run: test$(TESTS) 

그냥 좀 더 열심히 할 것 :

run: $(addprefix test,$(TESTS)) 

"실행 중"부분이 있기 때문에, 다음 잘못 이 규칙을 수립 할 때까지 모든 필수 구성 요소가 구축되었습니다 (즉, 테스트가 실행되었습니다).

+0

제안 해 주셔서 감사합니다. 내 주요 프로젝트에서 이것을 시도 할 것이다. – sarbjit