C ++ 11'i Xcode ile kullanabilir miyim?


86

autoBazı platformlar arası projelerde (Windows + Mac) bazı C ++ 11 özelliklerinin ( örneğin) kullanılmasını düşünüyorum. Windows'ta Visual Studio, kod tabanının bölümlerini basitleştirmeme olanak tanıyan gelecek C ++ 11 standardının bölümlerini destekler, bu yüzden doğal olarak bu özellikleri kullanmaya başlamakla ilgilenirim.

Ancak bildiğim kadarıyla mevcut XCode sürümü (3.2.4 + GCC 4.2) hiçbir C ++ 11 özelliğini desteklemiyor. GCC sürümünü veya CLang sürümünü bir şekilde yükseltebilir miyim? Yoksa dilimi ısırıp Apple'ın gelecekte bir ara yeni bir sürümü paketlemesini mi beklemeliyim?


Buradaki ve oradaki cevaplara bakın .
F'x

Daha olumlu bir sonuç için şu
adrese

Clang ile ilgili olarak: Son zamanlarda makul C ++ 03 desteğine ulaştığına inanıyorum, ancak C ++ 0x hala uzak bir hedef. Örneğin, değişken şablon desteği devam eden bir çalışmadır ve taşıma semantiği / değer değeri referansları henüz uygulanmamıştır.
Matthieu M.

Variadic şablonlar clang ile benim için iyi çalışıyor.
Alexandre Hamez

Yanıtlar:


76

Xcode 4.2 sonunda C ++ 0X için destek ekledi:

  1. Proje oluşturma ayarları ekranında, "Tümü" seçeneklerini açın.

  2. "Derleme Seçenekleri" bölümünde, derleyiciyi "Apple LLVM derleyici 3.0" olarak ayarlayın.

  3. "Apple LLVM Compiler 3.0 - Dil" bölümüne gidin ve "C ++ Dil Lehçesi" ni "C ++ 0X" ve "C ++ Standart Kitaplığı" nı "libc ++" olarak ayarlayın.

Std :: move (), move yapıcısı ve R-Value referansının beklendiği gibi çalıştığı biliniyor ve std :: thread ve std :: atomic üzerinde test ediyorum.


2
RichardLiu @, ne hakkında GNU++0Xseçeneğiyle C++ Language Dialectve libstdc++seçeneğiyle C++ Standard Library? Ne zaman kullanılacaklar?
kalay

Bir baktım /Developer/About\ Xcode.pdfve evet, C ++ 11'in desteklendiğini söylüyor, ancak kullandığımda -std=gnu++0xtükürüyor cc1plus: error: unrecognized command line option "-std=0x++"! Onun clang++yerine kullanmalı mıyım ?
errordeveloper

@errordeveloper, şimdiye kadar sadece Xcode IDE İÇİNDE C ++ 11'i başarıyla derledim. Komut satırında veya makefile'da C ++ 11'i nasıl etkinleştireceğimi bilmiyorum. Afedersiniz.
RichardLiu

1
@RichardLiu: XCode normalde clang++derleme sırasında kullanır , değil g++, bu yüzden g++komut satırından kullanmaya çalışırken C ++ 11 desteği başarısız olur (çünkü eski g++XCode size bunu desteklemez). Sadece bilginize.
Cornstalks

9

======= 2012 Güncellemesi: =======

Clang ile başlayın - Birçok C ++ 11 özelliği artık Clang'da mevcuttur. Xcode'a dahildir.

======= Ocak 2011 tarihli orijinal yanıt: =======

intel'in derleyicisi şu anda en temiz yol olabilir. http://software.intel.com/en-us/articles/intel-composer-xe/

clang umut verici, ancak özellikle kararlı değil veya wrt c ++ 0x özellikleri değil. c ++, clang için hala çok yenidir.

gcc: nispeten olgun, ancak xcode için derleyici eklentilerinizi yazmanız ve korumanız gerekecek.

ayrıca özel komut dosyaları da belirtebilirsiniz, ancak bu sürdürülmesi gereken bir zahmettir ... tamamen dışarı çıkıp bir adaptör aracı oluşturmadıkça.


1

Xcode, GCC veya Clang C ++ derleyicilerini kullanır. Bu derleyiciler tarafından desteklenen tüm özellikler adil oyundur. GCC'nin C ++ uyumluluk sayfası burada ve Clang C ++ uyumluluk sayfası burada .


2
Doğru ama GCC desteği, dişte biraz
uzamaya

0

Bir çapraz platform projesinde (MacOSX, iOS, gcc / linux, MSVC 10 / windows için LLVM) auto, decltype (), aralık tabanlı "for (:)" çalışmayı buldum.

lambdalar ve değişken makrolar, ne yazık ki henüz LLVM altında çalışmıyor gibi görünüyor.


1
MSVC 10 ve 11, için aralık tabanlı desteklemez. Clang, diğer taraftan, yaptığı gayet güzel variadic şablonları destekler.
Alex B
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.