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?
Trả lời
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 project
và target
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
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. –
@ChristianF, Cách đặt lời khen thành Xcode? – frogcjn
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
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
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