2011-10-10 2 views
0

제 메이크 파일이 디버깅을 위해 프로그램을 컴파일하고 있습니다. 그 말은 컴파일러에 -g -D DEBUG이 전달된다는 의미입니다. 나는 n d ebug 또는 -p에 대해을 전달하여 컴파일러에서 디버그 플래그를 제거 할 수 있기를 원합니다. 는 "MAKEFLAGS는 차 다음 -g -D DEBUG에 CFLAGS 설정없는 경우 그렇지 않으면 빈두고"나는이 작업을 수행 할 수있는 방법MAKEFLAG에 따라 메이크 파일의 변수 값을 어떻게 설정할 수 있습니까?

이렇게하려면 나는 메이크업 구문이 점을 넣는 방법이 필요 것? 당신이 -nd 관심을 모든이가 할 경우

+0

http://stackoverflow.com/questions/5127977/makefile-define-compilation-variable-based-on-target-for/5153406 # 5153406 –

+0

"nd '가 아니거나"nd "또는"p "가 없다는 것을 의미합니까? – Beta

+0

'MAKEFLAGS'는 make 내장 변수입니까? 'MAKEFLAGS'를 의미합니까 아니면 다른 프로젝트 별 변수를 의미합니까? –

답변

1

: 당신은 또한에 대해 -p 신경 경우

ifeq (,$(findstring nd,$(MAKEFLAGS))) 
FOO = -g -D DEBUG 
endif 

를, 꽤 깨끗 아니다 :

FOO = -g -D DEBUG 
ifneq (,$(findstring nd,$(MAKEFLAGS))) 
FOO = 
endif 

ifneq (,$(findstring p,$(MAKEFLAGS))) 
FOO = 
endif 
+0

'$ (findstring nd, ...)'비트는'make --warn-undefined-variables'가 전달 될 때 트리거 될 것입니다. (다른 변수 인 custom 변수와는 반대로'$ (MAKEFLAGS) '를 사용할 때 트리거됩니다.). –

+0

@EtanReisner : 좋은 지적입니다. 나는 그것을 방탄하려고 노력할 것이다. 그러나 많은 사람들이이 질문에 관심이있는 것처럼 보이지 않는다. – Beta

+0

매뉴얼이 잘못 되었기 때문에이 세부 사항은 실제로 다소 짜증이납니다 (7.3 절에서). –