2012-02-14 79 views
13

Tôi mới làm quen với lập trình, vì vậy chưa bao giờ trải nghiệm cập nhật ngôn ngữ. Với việc phát hành C++ 11, tôi muốn sử dụng tất cả các tính năng mới như các biểu thức và chuỗi lambda. Tôi biết tôi có thể làm điều này với các thư viện bên ngoài nhưng sử dụng các tính năng ngôn ngữ bản địa sẽ thuận tiện hơn.Làm thế nào để cập nhật lên C++ 11?

Tôi đang sử dụng gcc 4.2.1 trên Mac OS X Snowleopard trong Xcode 3.2.6

Tất cả những gì tôi cần phải làm gì và cập nhật để bắt đầu sử dụng C++ 11 tính năng?

+3

Xem http://stackoverflow.com/questions/7482026/can-i-use-the-latest-features-of- c11-in-xcode-4-or-osx-lion ... – StilesCrisis

+1

@StilesCrisis Câu hỏi được đề cập đến Lion, trong khi tôi hỏi về Snow Leopard ... – fdh

+0

Vâng, nó chắc chắn chỉ khó khăn hơn trên Snow Leopard. Tôi đoán MacPorts là như nhau và Xcode là một nguyên nhân bị mất. – StilesCrisis

Trả lời

24

Bạn có thể cập nhật lên Xcode 4.1 (hoặc bất kỳ phiên bản mới nhất nào bạn có thể nhận được cho Snow Leopard) và nhận trình biên dịch mới với một vài tính năng C++ 11 khác. Có một số bài viết ở đây trên Stack Overflow về việc hỗ trợ tốt hơn cho C++ 11 trong Xcode 4.1 trên Snow Leopard.

Nhưng ngay cả trình biên dịch mới nhất có sẵn thông qua Xcode cũng không hỗ trợ một số tính năng C++ 11 như lambdas. Để nhận được sự hỗ trợ C++ 11 tốt nhất, bạn sẽ muốn cài đặt trình biên dịch mới hơn, gcc 4.6 hoặc 4.7 hoặc Clang.

Tôi thường xuyên xây dựng phiên bản clang mới nhất từ ​​nguồn. Sẽ không khó nếu bạn quen với việc xây dựng phần mềm nguồn mở khác. Tôi sử dụng repo git cho clang và llvm, http://llvm.org/git/llvm.githttp://llvm.org/git/clang.git. Bạn cũng có thể tìm thấy hướng dẫn trên trang web của họ để bắt đầu: http://clang.llvm.org/get_started.html. Một khi bạn có nguồn cho clang và llvm nó chỉ là ./configure && make && sudo make install. (bạn có thể chạy thử nghiệm trước khi cài đặt, vì điều này là trực tiếp từ kho lưu trữ. Sau khi make làm make check trong thư mục llvm và sau khi chuyển cd xuống công cụ/clang và chạy make test. Nếu mọi thứ đều ổn thì sudo make install)

Tôi không nhớ liệu Snow Leopard có bao gồm libC++ hay không, vì vậy bạn cũng có thể cần thực hiện điều đó. http://libcxx.llvm.org/

Sau khi mọi thứ được xây dựng và cài đặt, bạn có thể làm:

clang++ -std=c++11 -stdlib=libc++ main.cpp && ./a.out 

và bạn nên có chỉ là về C++ 11 hỗ trợ tốt nhất xung quanh.

Các bản vá lỗi gần đây trong tiếng kêu thực sự đã cải thiện hỗ trợ cho các tính năng cuối cùng mà bạn có thể nhận thấy là một lập trình C++ mới. Vẫn còn một vài bit và phần còn lại, nhưng như của 3,1, và theo như tôi biết, clang có tất cả các tính năng C++ 11 hoặc gcc 4.7 hoặc VC++ 11 có và nhiều hơn nữa bên cạnh. libC++ cũng có những khoảng trống nhỏ nhất về tính năng thư viện chuẩn của C++ 11 IME (mặc dù tôi nghĩ thư viện chuẩn của VC++ cũng sẽ khá hoàn chỉnh khi chúng bắt kịp các tính năng ngôn ngữ, ví dụ char32_t và char16_t như các kiểu bản địa. cho những loại đó có thể được sử dụng).

+0

Snow Leopard không có libC++ cập nhật, bạn phải xây dựng nó. Tuy nhiên, nó không rõ ràng từ các tài liệu libC++ làm thế nào để làm điều đó với một clang ++ hiện đại. Họ cung cấp hướng dẫn cho Linux hoặc Mac nhị phân được biên dịch cho [Mountain] Lion, tức là. OS X 10.7 và 10.8. –

+0

@ user465139 Thực hiện các hướng dẫn để thực hiện 'cd libcxx/lib; xuất TRIPLE = -apple-; ./buildit' không hoạt động trên Snow Leopard? – bames53

+0

+ clang ++ -c -g -Os -arch i386 -arch x86_64 -std = C++ 0x -U__STRICT_ANSI__ -nostdinC++ -I ../ bao gồm ../src/exception.cpp ../src/exception.cpp: 18:12: lỗi nghiêm trọng: không tìm thấy tập tin 'cxxabi.h' #include

1

Về cơ bản, bạn chỉ cần có chuỗi công cụ hỗ trợ các tính năng mới. Trong macosx có thể là GCC hoặc clang ++. Bạn có thể cần phải tải xuống/biên dịch một phiên bản cụ thể nếu cần thiết (tức là nếu tính năng mà bạn muốn thử không có trong gói trình biên dịch được đóng gói sẵn nhưng có sẵn trong kho lưu trữ).

Tôi đã tải xuống và biên dịch thư mục mới nhất của clang ++ từ lật đổ để thực hiện một số kiểm tra và cài đặt g ++ 4.6 với macports trong Snow Leopard. Tôi nhớ rằng tôi đã có một số vấn đề với các thiết lập của môi trường, nhưng không hoàn toàn nhớ được những trình biên dịch đã cho tôi vấn đề hoặc làm thế nào tôi giải quyết chúng. Google là bạn của bạn ở đó :)

1

Nếu bạn đã homebrew cài đặt, từ this article, chỉ cần hai bước sau:

brew tap homebrew/dupes 
brew install gcc --enable-cxx --enable-fortran --use-llvm 
Các vấn đề liên quan