2009-09-29 5 views

답변

16

qmake에서, 당신은 자동 구성 옵션을 추가 할 수 있습니다

CONFIG += silent 

(참고 :.. 나는 그 명령 생각 그것은이 비슷한입니다) 출력의 대부분을 억제한다

, 경고 및 오류와 함께 "ao 컴파일"과 같은 인쇄 줄만 표시됩니다. 나는 (... 내가 그 사람 생각)이 make.SILENT. 지침과 유사하다 생각

은 그 오류 파서 사용하려는 많은 정보를 억제하기 때문에 당신은, 그러나,이주의해야 할 수 있습니다. 예를 들어 SUBDIRS 구성으로 컴파일하는 경우 다른 디렉토리로 변경되면 인쇄되지 않습니다.

+0

굉장합니다. 정확히 내가 필요로했던 것 –

0

$(CC) in.ext -o out.ext 

덕분에 같은 것을 생각하고 당신이 '@'인쇄물을 억제하고 당신이보고 싶은 에코 할 수 있습니다

간단한 예 :

out.ext: $(OBJ) 
    @echo $(CC) -o out.ext 
    @$(CC) -o out.ext $(OBJ) $(OTHER_FLAGS_ETC) 
+0

어, 저는 qmake 내부에서만 마법을 없애고 싶습니다. 혼란을 드려 죄송합니다. –

+1

OP가 qmake를 물었습니다 –

5

다른 접근 방식이 있습니다. 그리고 구성 가능하게 만들 수 있습니다.

  • 당신은 규칙 내의 라인의 앞에 @ 기호를 추가 경우, 명령 자체가 인쇄되지 않습니다, 그러나 그것의 출력은 것이다. 당신이 당신의 CFLAGS 변수에 -Werror를 추가 경우
  • (당신은 당신이하지 않는 일을해야합니까 그것은 일반적인 관행이다?!), 당신은 분명히 경고 놓치지 않습니다 - 빌드가 첫 번째 후 중지됩니다.
  • 명령의 표준 출력을 /dev/null으로 리디렉션하여 오류 스트림 만 남겨 둘 수 있습니다 (gcc는 일반적으로 출력을 생성하지 않지만 다른 명령에 유용 할 수 있으므로 특정 경우는 아닙니다).

불행히도 qmake의 경우 두 번째 접근 방식 만 적용됩니다. 프로젝트 파일에 추가

QMAKE_CFLAGS+=-Werror 
QMAKE_CXXFLAGS+=-Werror 

그리고 빌드가 모든 경고에 중지 있도록 이러한 플래그를 사용합니다 생성 된 메이크 그들은, 컴파일러를 호출 할 때.


(이 섹션은 곧 다른 질문으로 이동합니다.)

일반적인 용도로 모든 것을 사용할 수 있습니다. 모든 설정을 할 수 있습니다! 다음의 예는 다음과 같습니다

trace?=short 

ifeq ($(trace),short) 
    [email protected] 
    redirect_to_null=1>/dev/null 

else ifeq ($(trace),full) 
    suppress_echo= 
    redirect_to_null= 

else ifeq ($(trace),werror) 
    CFLAGS+=-Werror 

else 
    $(error Incorrect trace type "$(trace)"!) 
endif 

# Thanks to Martin York for the source of this copy-pasted code 
out.ext: $(OBJ) 
    @echo $(CC) $(CFLAGS) -o out.ext $(redirect_to_null) 
    $(suppress_echo)$(CC) $(CFLAGS) -o out.ext $(OBJ) $(redirect_to_null) 

을 그래서,이 같은 make 호출하는 경우 : 그것은 모든 것을 인쇄 할

$ make trace=full 

합니다. 당신이 short 값이 기본적으로 사용됩니다

$ make 

호출하면

out.ext: out.o 
    @echo cc -o out.ext 1>/dev/null 
    @cc -o out.ext out.o 1>/dev/null 
당신만큼을

줄 것이다 무엇 (! 대신 평소 =?= 연산자를 참고)와 규칙은 버전으로 확장됩니다 필요한 것.

이러한 접근 방식은 구성을 사용하여 프로덕션 코드에서 사용됩니다.예를 들어 Ubuntu의 IcedTea makefile에서이 파일을 보았습니다.

+0

어, 저는 qmake 내부에서만 마법을 없애고 싶습니다. 혼란을 드려 죄송합니다. –

+0

+1 : -Werror의 경우. 이것이 IMO의 가장 좋은 제안이며 프로젝트 파일에서 수행 할 수 있습니다. – Troubadour

+0

@hydroes : 내 대답을 편집하여 도움을 청했습니다. –

관련 문제