Xcode에서 C ++ 11을 사용할 수 있습니까?


86

auto일부 크로스 플랫폼 프로젝트 (Windows + Mac) 에서 일부 C ++ 11 기능 (예 : 예) 의 사용을 고려하고 있습니다 . Windows에서 Visual Studio는 코드베이스의 일부를 단순화 할 수있는 곧 출시 될 C ++ 11 표준의 일부를 지원하므로 자연스럽게 이러한 기능을 사용하는 데 관심이있을 것입니다.

그러나 내가 아는 한 현재 XCode 버전 (3.2.4 + GCC 4.2)은 C ++ 11 기능을 전혀 지원하지 않습니다. GCC 버전이나 CLang 버전을 어떻게 든 업그레이드 할 수 있습니까? 아니면 혀를 깨물고 애플이 언젠가 새로운 버전을 포장 할 때까지 기다려야할까요?


답변 봐 여기있다 .
F'x

보다 긍정적 인 결과는 다음을 참조하십시오. stackoverflow.com/questions/837992/update-gcc-on-osx
David Rodríguez-dribeas

Clang 관련 : 최근에 합리적인 C ++ 03 지원을 달성했다고 생각하지만 C ++ 0x는 여전히 먼 목표입니다. 예를 들어 가변 템플릿 지원이 진행 중이며 이동 의미 체계 / rvalue 참조가 아직 구현되지 않았습니다.
Matthieu M.

Variadic 템플릿은 clang에서 잘 작동합니다.
Alexandre Hamez 2012 년

답변:


76

Xcode 4.2는 마침내 C ++ 0X에 대한 지원을 추가했습니다.

  1. 프로젝트 빌드 설정 화면에서 "모두"옵션을 켭니다.

  2. "빌드 옵션"섹션에서 컴파일러를 "Apple LLVM 컴파일러 3.0"으로 설정합니다.

  3. "Apple LLVM Compiler 3.0-Language"섹션까지 아래로 스크롤하여 "C ++ Language Dialect"를 "C ++ 0X"로, "C ++ Standard Library"를 "libc ++"로 설정합니다.

std :: move (), 이동 생성자 및 R-Value 참조가 예상대로 작동하는 것으로 알려져 있으며 std :: thread 및 std :: atomic에서 테스트 중입니다.


2
@ RichardLiu,에 대한 GNU++0X옵션 C++ Language Dialectlibstdc++옵션은 C++ Standard Library어떻습니까? 언제 사용됩니까?
Tin

나는 들여다 보았고 /Developer/About\ Xcode.pdf예, C ++ 11이 지원된다고 말하지만 사용 -std=gnu++0x하면 뱉어냅니다 cc1plus: error: unrecognized command line option "-std=0x++"! clang++대신 사용해야합니까 ?
errordeveloper

@errordeveloper, 지금까지 Xcode IDE에서 C ++ 11 만 성공적으로 컴파일했습니다. 명령 줄이나 메이크 파일에서 C ++ 11을 활성화하는 방법을 모르겠습니다. 죄송합니다.
RichardLiu

1
@RichardLiu : XCode는 일반적으로 clang++컴파일 할 때 사용 하지 않습니다 g++. 이것이 C ++ 11 지원이 g++명령 줄에서 사용하려고 할 때 실패하는 이유입니다 (고대 g++XCode에서 지원하지 않기 때문입니다). 참고로.
Cornstalks

9

======= 2012 업데이트 : =======

Clang으로 시작-이제 Clang에서 많은 C ++ 11 기능을 사용할 수 있습니다. Xcode에 포함되어 있습니다.

======= 2011 년 1 월의 원래 답변 : =======

인텔의 컴파일러는 현재 가장 깔끔한 방법 일 수 있습니다. http://software.intel.com/en-us/articles/intel-composer-xe/

clang의 유망하지만 특히 안정되지 않거나 wrt c ++ 0x 기능이 특징입니다. c ++는 여전히 clang의 새로운 기능입니다.

gcc : 상대적으로 성숙하지만 xcode 용 컴파일러 플러그인을 작성하고 유지 관리해야합니다.

사용자 지정 스크립트를 지정할 수도 있지만 유지 관리가 어렵습니다 ... 모든 작업을 수행하여 어댑터 도구를 만들지 않는 한.


1

Xcode는 GCC 또는 Clang C ++ 컴파일러를 사용합니다. 이러한 컴파일러가 지원하는 모든 기능은 공정한 게임입니다. GCC의 C ++ 호환성 페이지는 여기에 있고 Clang C ++ 호환성 페이지는 여기에 있습니다 .


2
사실이지만 GCC 지원은 4.2에서 멈춤으로써 치아에서 조금 길어지기 시작합니다
Mattia

0

크로스 플랫폼 프로젝트 (MacOSX, iOS, gcc / linux, MSVC 10 / windows 용 LLVM)에서 auto, decltype (), range based "for (:)"를 찾았습니다.

람다 및 가변 매크로는 LLVM에서 아직 작동하지 않는 것으로 보입니다.


1
MSVC 10 및 11은 범위 기반을 지원하지 않습니다. 반면 Clang 가변 템플릿을 잘 지원합니다.
Alex B
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.