2011-01-01 30 views
81

Rozważam wykorzystanie niektórych funkcji C++ 11 (na przykład auto) w niektórych projektach wieloplatformowych (Windows + Mac). W systemie Windows Visual Studio obsługuje części nadchodzącego standardu C++ 11, który pozwoliłby mi uprościć części kodu źródłowego, więc naturalnie chciałbym zacząć korzystać z tych funkcji.Czy mogę używać C++ 11 z Xcode?

Ale o ile mi wiadomo, obecna wersja XCode (3.2.4 + GCC 4.2) w ogóle nie obsługuje żadnych funkcji C++ 11. Czy mogę jakoś uaktualnić wersję GCC lub wersję CLang? Czy powinienem po prostu ugryźć się w język i czekać, aż Apple spakuje nową wersję kiedyś w przyszłości?

+0

Zobacz odpowiedzi [tutaj] (http://stackoverflow.com/questions/2946887) i [tam] (http://stackoverflow.com/questions/3002395). –

+0

Aby uzyskać bardziej pozytywny wynik, spójrz na: http://stackoverflow.com/questions/837992/update-gcc-on-osx –

+0

Doskonały link! –

Odpowiedz

71

Xcode 4.2 wreszcie dodano wsparcie dla C++ 0 x:

  1. na ekranie ustawień Build Project, przełącznik na "wszystkie" opcji.

  2. W sekcji "Opcje kompilacji" ustaw kompilator na "Kompilator Apple LLVM 3.0".

  3. Przewiń w dół do sekcji "Apple LLVM Compiler 3.0 - Language" i ustaw "C++ Language Dialect" na "C++ 0X" i "C++ Standard Library" na "libC++".

SDT :: ruch() przesunąć konstruktora wartości R odniesienia są znane działa prawidłowo, i m testowania na std std :: nici i :: atomowej.

+2

@ RichardLiu, co z opcją 'GNU ++ 0X' dla opcji' C++ Language Dialect' i 'libstdC++' dla 'C++ Standard Biblioteka "? Kiedy będą używane? – Tin

+0

Spojrzałem w '/ Developer/About \ Xcode.pdf' i tak, mówi, że C++ 11 jest obsługiwany, ale kiedy używam' -std = gnu ++ 0x' wypluwa 'cc1plus: error : nierozpoznana opcja wiersza poleceń "-std = 0x ++" '! Czy zamiast tego powinienem użyć 'clang ++'? – errordeveloper

+0

@errordeveloper, dotychczas tylko z powodzeniem skompilowałem C++ 11 WITHIN Xcode IDE. Nie wiem, jak włączyć C++ 11 w wierszu poleceń lub makefile. Przepraszam. – RichardLiu

1

Xcode używa kompilatorów GCC lub Clang C++. Wszelkie funkcje obsługiwane przez te kompilatory są dozwolone. Strona kompatybilności z GCC na C++ to here, a strona kompatybilności z językiem Clang C++ to here.

+2

Prawdziwe, ale wsparcie GCC zatrzymuje się na 4.2, które zaczyna być nieco dłuższe w ząbach – Mattia

8

Aktualizacja ======= 2012: =======

Zacznij Clang - Wiele C++ 11 funkcje są teraz dostępne w Clang. Jest dołączony do Xcode.

======= odpowiedź Original od stycznia 2011: ======= kompilator

Intela może być najczystszym sposobem, aby przejść w tym czasie. http://software.intel.com/en-us/articles/intel-composer-xe/

Klang obiecujące, ale niezbyt stabilne lub funkcjonalne funkcje C++ 0x. C++ jest nadal bardzo nowy dla klang.

gcc: stosunkowo dojrzały, ale będziesz musiał napisać i utrzymywać wtyczki kompilatora dla xcode.

można również określić własne skrypty, ale to jest trudność w utrzymaniu ... chyba że wszystko wypalisz i utworzysz narzędzie adaptera.

0

Znalazłem auto, decltype(), oparte na zasięgu "for (:)" pracy w projekcie między platformami (LLVM dla MacOSX, iOS, gcc/linux, MSVC 10/windows).

lambdas & Makra variadic nie wydają się działać pod LLVM jeszcze niestety.

+1

MSVC 10 i 11 nie obsługują opartych na zasięgu dla. Clang, z drugiej strony, * robi * obsługuje szablony variadic po prostu dobrze. –

Powiązane problemy