2013-09-28 53 views
13

Apple đã xóa hoàn toàn mọi hỗ trợ GCC mà họ từng có. Có cách nào để sử dụng một GCC gần đây (nói 4.8) với Xcode 5? Nói cách khác, sử dụng GCC thay cho LLVM trong Xcode.Cách sử dụng GCC gần đây với Xcode 5?

+0

Bạn sẽ cần phải viết một plugin xcode để hỗ trợ một trình biên dịch khác, và nó có thể là một chút công việc để hoàn thành nó (tôi không biết, tôi đã không viết một nhưng có câu trả lời liên quan đến các phiên bản trước của Xcode liên quan đến công việc này). – Petesh

+0

Bạn có thể cố gắng ghi đè cờ 'CC' trong Xcode, như được mô tả trong (2) trong [bài đăng này] (http://stackoverflow.com/questions/16261612/is-it-possible-to-compile-a- phiên bản mới hơn-of-llvm-và-sử dụng-nó-với-xcode/16265711 # 16265711). Vấn đề là GCC có một giao diện khác so với Clang, vì vậy nó không hiểu tất cả các cờ Xcode được đặt mặc định. Tôi không thể làm cho nó làm việc cho một ứng dụng mẫu iOS, nhưng nó có thể làm việc nếu bạn không sử dụng một mẫu hoặc không có mục tiêu-C ở tất cả. – hagi

Trả lời

19

cài đặt GCC 4.8 vào Xcode 4.5, Xcode 4.6, Xcode 5.0:

cho những người chưa cài đặt GCC 4.8:

cài đặt phiên bản mới của home-brew

bạn có thể tìm thấy phương pháp làm thế nào để cài đặt trên Internet

cập nhật brew bạn lên phiên bản mới nhất ($brew update)

1. brew install gcc48 --enable-all-languages

(có thể nên cài đặt mpc, mpfr và GMP qua brew, http://solarianprogrammer.com/2013/06/11/compiling-gcc-mac-os-x/)

2. $brew link gcc48

3.backup g ++, GPP, C++, cpp, C++ trong /usr/bin/

4. [bước không bắt buộc]:

alias g ++ - 4.8, GPP 4.8, C++ - 4.8, cpp-4,8, C++ - 4,8

từ /usr/local/Cellar/gcc48/4.8.2/bin/g++

để /usr/bin/

[trên 4 bước cho các nhà phát triển đã không cài đặt gcc]

5.make Plugin

1) tải a plugin of GCC 4.5 for Xcode

2) thay đổi mỗi "4.5" đến "4.8", "4_5" đến "4_8", tên tệp, nội dung tệp,

ngoại trừ "com.apple.compilers.gcc.headers.4_2" trong tệp GCC 4.5.xcspec.

bạn có thể giữ nguyên nội dung ở English.lproj không đổi và xóa Japanese.lproj.

3) trong tập tin GCC 4.8.xcspec

(hy vọng bạn đã thay đổi tên tập tin của GCC 4.5.xcspec-GCC 4.8.xcspec)

thay đổi ExecPath = "...”;

để ExecPath = "/usr/local/bin/gcc-4.8"

hoặc ExecPath = "/usr/local/Cellar/gcc48/4.8.2/bin/gcc-4.8" (đối với những người cài đặt gcc-4.8 bởi brew)

4) xóa “-Wshorten-64-to-32” phần trong tập tin GCC 4.8.xcspec

{ 
    Name = "GCC_WARN_64_TO_32_BIT_CONVERSION"; 
    Type = Boolean; 
    DefaultValue = NO; 
    CommandLineArgs = { 
     YES = (
      "-Wshorten-64-to-32", 
     ); 
     NO =(); 
    }; 
    AppearsAfter = "GCC_WARN_PROTOTYPE_CONVERSION"; 
    Category = Warnings; 
    CommonOption = NO; 
    DisplayName = "Implicit Conversion to 32 Bit Type"; 
    Description = "Warn if a value is implicitly converted from a 64 bit type to a 32 bit type. 
    [GCC_WARN_64_TO_32_BIT_CONVERSION, -Wshorten-64-to-32]"; 
} 

6.put sửa GCC 4.8.xcplugin vào

/Applications/Xcode.app/Contents/Plugins/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/

7.reopen Xcode.

Bây giờ, plugin mới đã sẵn sàng cho bạn. Bạn có thể thấy mới Plugin trình biên dịch GCC của bạn trong "biên dịch cho C/C++/Objective-C" của "Xây dựng Settings" của dự án của bạn

8.change Build Settings trong dự án Xcode

1) Trong projecttarget thiết lập trong Xcode

thay đổi "trình biên dịch cho C/C++/Objective-C" để "GCC 4.8"

2) trong project thiết lập

delete “CLANG_CXX_LIBRARY" hàng

+0

Ngoài việc này, tôi phải đảm bảo rằng các tệp nhị phân của tôi sẽ liên kết với các thư viện libstdC++ trong /usr/local/Cellar/gcc48/4.8.2/gcc/lib, nghĩa là tôi phải đặt đường dẫn thư viện cho trình liên kết với -L /usr/local/Cellar/gcc48/4.8.2/gcc/lib thay vì -L/usr/lib. –

+0

@ChristianF, Cách đặt lời khen thành Xcode? – frogcjn

+0

Tôi đã thử điều này trên XCode 5.0.2 và trình biên dịch GCC 4.8.2 không được hiển thị trong danh sách trình biên dịch. Tôi cũng đã thử nó với XCode 3 và nó đã xuất hiện ở đó. Có lẽ XCode 5.0.2 đã phá vỡ một cái gì đó. – Halt

0

Tôi chắc chắn các phiên bản gcc mới nhất có thể liên kết với các thư viện của Apple. Bạn có thể cài đặt các phiên bản gcc, llvm (và clang) mới hơn và nhiều ứng dụng Unix khác với Homebrew. Kiểm tra nó ra here.

+0

Điều đó sẽ không tích hợp GCC vào Xcode. – Adam

Các vấn đề liên quan