2013-09-28 11 views
13

Apple całkowicie usunął wszelkie wsparcie GCC, które niegdyś posiadali. Czy jest jakiś sposób na użycie najnowszego GCC (powiedzmy 4.8) z Xcode 5? Innymi słowy, aby użyć GCC zamiast LLVM w Xcode.Jak używać najnowszego GCC z Xcode 5?

+0

Będziesz musiał napisać wtyczkę xcode, aby obsługiwać inny kompilator, i prawdopodobnie jest to trochę pracy, aby to osiągnąć (nie wiem, nie napisałem, ale są odpowiedzi związane z wcześniejszymi wydaniami Xcode włączając tę ​​pracę). – Petesh

+0

Możesz spróbować zastąpić flagę 'CC' w Xcode, jak opisano w (2) w [tym poście] (http://stackoverflow.com/questions/16261612/is-it-possible-to-compilea-a- nowsza wersja-of-llvm-and-use-it-with-xcode/16265711 # 16265711). Problem polega na tym, że GCC ma inny interfejs niż Clang, więc nie rozumie domyślnie wszystkich flag Xcode. Nie mogłem tego zrobić w aplikacji na system iOS, ale może działać, jeśli nie korzystasz z szablonu lub w ogóle nie używasz C-a. – hagi

Odpowiedz

19

zainstalować GCC 4.8 do Xcode 4.5, Xcode 4.6, Xcode 5.0:

dla ludzi, którzy nie mają zainstalować GCC 4.8:

zainstalować nową wersję home-brew

można wybrać Sposób w jaki sposób zainstalować w Internecie

zaktualizować swój napar do najnowszej wersji ($brew update)

1.

(może należy zainstalować MPC mpfr i GMP przez parzenie, http://solarianprogrammer.com/2013/06/11/compiling-gcc-mac-os-x/)

2. $brew link gcc48

3.backup g ++ GPP, C++, CPP, C++ w /usr/bin/

4. [opcjonalny krok]

ps g ++ - 4,8, GPP-4.8, C++ - 4,8, CPP-4.8, C++ - 4,8

z /usr/local/Cellar/gcc48/4.8.2/bin/g++

do /usr/bin/

[powyżej 4 kroki do dewelopera, który nie zainstalować gcc]

5.make wtyczki

1) pobranie a plugin of GCC 4.5 for Xcode

2) zmienić każdy "4.5" do "4.8", "4_5" do "4_8", nazwy plików, zawartość pliku,

z wyjątkiem "com.apple.compilers.gcc.headers.4_2" w pliku GCC 4.5.xcspec.

możesz pozostawić zawartość w stanie niezmienionym pod numerem English.lproj i usunąć Japanese.lproj.

3) w pliku GCC 4.8.xcspec

(mam nadzieję już zmienić nazwę pliku z GCC 4.5.xcspec do GCC 4.8.xcspec)

zmiana ExecPath = "...”;

do ExecPath = "/usr/local/bin/gcc-4.8"

lub ExecPath = "/usr/local/Cellar/gcc48/4.8.2/bin/gcc-4.8" (dla ludzi, którzy zainstaluj gcc-4.8 przez parzenie)

4) usuwanie części „-Wshorten 64-do-32” w pliku 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 redakcją GCC 4.8.xcplugin w

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

7.reopen Xcode.

Teraz nowa wtyczka już przygotowała dla Ciebie. Można zobaczyć nową wtyczkę kompilatora GCC w "kompilatora C/C++/Objective-C" z "Build Settings" Twojego projektu

8.change Zbuduj Ustawienia w projekcie Xcode

1) w project i target ustawień w Xcode

zmiana "kompilator C/C++/Objective-C" do "GCC 4.8"

2) W ustawieniach project

Delete „CLANG_CXX_LIBRARY” rząd

+0

Oprócz tego musiałem się upewnić, że moje pliki binarne będą łączyć się z bibliotekami libstdC++ w /usr/local/Cellar/gcc48/4.8.2/gcc/lib, tj. Musiałem ustawić ścieżkę biblioteki dla łącznika za pomocą -L /usr/local/Cellar/gcc48/4.8.2/gcc/lib zamiast -L/usr/lib. –

+0

@ChristianF, Jak ustawić commend na Xcode? – frogcjn

+0

Próbowałem tego na XCode 5.0.2 i kompilator GCC 4.8.2 nie jest wyświetlany na liście kompilatorów. Próbowałem także z XCode 3 i pojawił się tam. Może XCode 5.0.2 coś zepsuł. – Halt

0

Jestem pewien, że najnowsze wersje gcc mogą łączyć się z bibliotekami Apple. Możesz zainstalować nowsze wersje gcc, llvm (i clang) oraz wiele innych aplikacji unixowych z Homebrew. Sprawdź to here.

+0

To nie będzie integrować GCC z Xcode. – Adam

Powiązane problemy