2010-02-02 4 views
17

나는 GNU make를 사용하고 있으며, 호출시 환경에 CFLAGS이 정의되어있는 경우 광역으로가는 빌드 시스템을 가진 프로젝트에 타사 라이브러리를 포함시키고 있습니다. 나는 다른 이유로 나의 환경에서 CFLAGS을 정의하고 싶다. 라이브러리의 빌드는 내가 예컨대 말할 수 있도록 :Makefile에서 환경 변수를 "설정 해제"할 수 있습니까?

3rdparty, 다른 메이크 파일에서 호출되는 : $(MAKE) -f Makefile.3rdparty

을하지만 제 3 자 메이크에 만들어 호출 할 때 나는 CFLAGS가 설정되어 있는지 확인하고 싶습니다. 내가 찾을 수있는 가장 가까운 것은 말을하는 것입니다 :

CFLAGS:=

을하지만 여전히 환경에 CFLAGS 세트 잎 그냥 빈 문자열입니다. 그렇다 말처럼 끔찍한 일을에서 :

3rdparty : 그것은 전혀에서 존재하지 수 있도록 bash -c "unset CFLAGS; $(MAKE) -f Makefile.3rdparty"

을 "해제"내 기본 메이크 내에서 CFLAGS 변수 쉬운 방법이 있나요 써드 파티 라이브러리가 호출 될 때 환경?

답변

23

다음 중 어떤 것을 사용하지 않으십니까?

unexport CFLAGS 
3rdparty: 
     $(MAKE) -f Makefile.3rdparty 
+0

! 나는 "unexport"키워드에 대해 몰랐다. 감사! –

+1

@JayWalker 만족 스럽다면이 답변을 수락 한 것으로 표시하십시오. –

0

레시피에서 다른 명령에 대해 변수를 정의하고 submake에서만 정의하지 않으려면 문제가 될 수 있습니다. 또 다른 해결책은 ENV를 사용합니다 - submake를 호출하고 명시 적으로 당신이 submake에서 설정해야하는 모든 환경 변수, 예를 들어 설정 :

env - PATH="$$PATH" LD_LIBRARY_PATH="$$LD_LIBRARY_PATH" $(MAKE) -f Makefile.3rdparty 
-3

리눅스에서 환경 변수 설정을 해제하기를.

사용 : 3.82 메이크업은 "undefine"지시문을 가지고 버전으로

export -n MY_ENV_VARIABLE 
0

:

그것은 않습니다
undefine CFLAGS 
관련 문제