2016-11-04 4 views
1

커맨드 라인 호출에서 사용자가 보낸 대상을 알기위한 GNU Make 특수 변수가 있습니까? (그냥 예입니다) 같은 것을 달성하기GNU Make : 요청한 대상

// makefile 
ifeq ($(USER_TARGET),"plain") 
CXXFLAGS += -O0 
else 
CXXFLAGS += -O3 
endif 

plain: 
    // do something using CXXFLAGS 

all: 
    // other rule using CXXFLAGS 

그것은, 값이 특별한 GNU에 의해 설정 된 특별한 GNU 변수를 확인 할 수있는 USER_TARGET 변수 (또는 사용자 정의 변수가 기능을 확인하는 것이 중요합니다 사용자 타겟을 반환)은 다음과 같은 호출에서 사용자가 지정한 원래 대상을 포함합니다.

$ make plain 

종속성 트리의 모든 단계 값이 아닙니다. 즉, 내가 잘못하지 않았다면, USER_TARGET의 값은 처음 사용될 때 평가 될 것이고, 문서의 어느 지점에서나 발생할 수 있기 때문에 USER_TARGET은 건물 의존성 체인 동안 변경해서는 안됩니다 , 그래서, 체인의 현재 단계가 USER_TARGET의 값을 바꾸지 않도록하고 싶습니다.

내가 충분히 명확한 지 또는 과도하게 설명 된 것인지 알 수 없습니다.

GNU Make에 내장 된 메커니즘이 없다면 $(shell command) 트릭도 환영합니다.

+1

아마도이 방법이 효과가 있습니까? [조리법 내에서 변수를 할당 할 수 없습니다.] (http://stackoverflow.com/questions/6519234/cant-assign-variable-inside-recipe). – lurker

+1

당신이 무엇을 하려는지 모르겠지만, 최근에'debug : clean' @ make CFLAGS = '$ {DEBUG_CFLAGS}'로 메이크 파일을 보았습니다. – Random832

+1

여러 타겟을 지정할 수 있습니다. 예를 들어' make -f Makefile build test'를 사용하여 빌드 및 테스트 대상을 모두 호출 할 수 있습니다. – mjs

답변