Qt Creator에서 C ++ 11을 활성화하는 방법은 무엇입니까?


167

제목은 꽤 자기 묘사 적입니다. Qt Creator 2.7.0을 다운로드했으며 기본 C ++ 11 코드를 컴파일하려고합니다.

int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
  x *= 2;
}

다음과 같은 오류가 발생합니다.

range based for loops are not allowed in c++ 98 mode

그러나이 기사 에 따르면 Qt Creator 버전은 C ++ 11을 지원합니다. 어떻게 활성화합니까?


3
Qt Creator는 컴파일러가 아닙니다. "Qt Creator가 C ++ 11을 지원함"을 읽으면 코드 완성 엔진 (이 경우 Clang)이 C ++ 11 구문을 지원한다는 의미입니다.
cmannett85 2016 년

@ cmannett85 Qt Creator는 여전히 Clang을 C ++ 구문 분석기로 사용하지 않습니다. 노력이 있었지만 Clang의 API와이 솔루션의 일반적인 성능으로 인해 지연되었습니다. 이 방향의 현재 작업은 여기있습니다 .
rubenvb

답변:


261

이 사이트 에 따르면 추가

CONFIG += c++11

.pro 파일에 추가하십시오 (해당 웹 페이지 하단 참조). Qt 5가 필요합니다.


다른 답변, 제안

QMAKE_CXXFLAGS += -std=c++11(또는 QMAKE_CXXFLAGS += -std=c++0x)

Qt 4.8 및 gcc / clang 에서도 작동 합니다.


4
익명의 downvotes는 아무도 돕지 않습니다. 대답에 어떤 문제가 있습니까?
Ali

문제는 중복 / 불완전한 답변을 삭제할 수 없다는 것입니다. 더 잘 보이도록 편집 했으므로 이제는 공감대에 만족합니다.
nurettin

9
@nurettin 의견에 감사드립니다. 답변의 편집 기록 (광산 및 기타)을주의 깊게 검토하면 내 원래 답변이 중복되지 않았 음을 알 수 있습니다. 그것은 실제로 내 대답의 일부를 뻔뻔스럽게 훔쳐서 내 대답을 복제본처럼 보이게 만드는 다른 대답이었습니다. 그리고 올해 두 개의 중복 답변이 더 나왔습니다. 편집 내역에서 직접 확인하십시오. 이 정보가 제공되면 다운 보트를 재고 하시겠습니까?
Ali

3
@Troyseph 여기 상황에 대한 이해가 있습니다. gcc를 사용하고 있다고 가정합니다. gcc 버전이을 지원하는 경우 -std=c++11(더 이상 사용되지 않는) -std=c++0x플래그 도 지원해야 하며 두 플래그 모두 동일한 효과를 가져야합니다 (귀하의 컴퓨터에는 해당되지 않음). 컴파일러가를 지원 -std=c++0x한다고해서 이해한다는 의미는 아닙니다 -std=c++11. 따라서 -std=c++0xC ++ 11 호환 모드의 기본값으로 선택하는 것이 합리적입니다. 내 컴퓨터에서, 적어도 사람 페이지에 따라 , -std=c++0x그리고 -std=c++11동일하다.
알리

1
@Troyseph 이제 -std=c++11컴파일러가 지원한다면 사용 하는 것이 더 좋으며 Qt는 충분히 똑똑 할 수 있습니다. 글쎄,이 문제가 당신을 그렇게 많이 아프면, 당신은 버그 보고서를 제출할 수 있습니다 ...
Ali

32

이것을 .pro 파일에 추가 하십시오

QMAKE_CXXFLAGS += -std=c++11

또는

CONFIG += c++11

18

알리의 탁월한 답변으로 해결 된 두 사례를 모두 처리하기위한 대안으로, 나는 보통

# With C++11 support
greaterThan(QT_MAJOR_VERSION, 4){    
CONFIG += c++11
} else {
QMAKE_CXXFLAGS += -std=c++0x
}

내 프로젝트 파일에. 팀에서 사람들이 사용하는 Qt 버전에 대해별로 신경 쓰지 않지만 C ++ 11을 사용하도록 설정하려는 경우 유용합니다.


이것은 -std = c ++ 11이어야합니다
Predrag Manojlovic

8

qmake 파일에 추가

QMAKE_CXXFLAGS+= -std=c++11
QMAKE_LFLAGS +=  -std=c++11

4

이전 버전의 QT (<5)를 사용하는 경우 다음을 시도하십시오

QMAKE_CXXFLAGS += -std=c++0x

1

내가 성공적으로 작동시킨 유일한 장소는 다음을 검색하는 것입니다.

... \ Qt \ {5.9; 또는 귀하의 버전} \ mingw {53_32; 또는 버전} \ mkspecs \ win32-g ++ \ qmake.conf :

그런 다음 줄에 :

QMAKE_CFLAGS           += -fno-keep-inline-dllexport

편집하다 :

QMAKE_CFLAGS           += -fno-keep-inline-dllexport -std=c++11
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.