Kompilierfehler aussortieren, wenn mehrere verschiedene Versionen von Xcode verwendet werden

Ich bin auf Yosemite und versuche, ein Softwarepaket mit g++. Das Kompilieren dieses speziellen Pakets hat zuvor auf Mountain Lion unter Xcode 4.6.3 funktioniert, aber jetzt habe ich Xcode 6.1.1 und die Software lässt sich nicht kompilieren. Aus diesem Grund möchte ich in der Lage sein, zwischen verschiedenen Versionen von Xcode zu wechseln. Ich sollte sagen, dass ich ausschließlich mit den Befehlszeilentools (CLT), make, g++und dergleichen arbeite. Jetzt habe ich eine frühere Version von Xcode, 4.6.3, installiert, sodass die Situation wie folgt ist:

  • /Applications/Xcode.app: aktuelle Version von Xcode, 6.1.1
  • /Applications/Xcode4.6.3/Xcode.app: frühere Version von Xcode, 4.6.3

Ich hatte vor, zwischen diesen beiden mit sudo xcode-select -s PATH. Soweit ich das beurteilen kann, funktioniert dieser Befehl, und ich kann das Ergebnis mit überprüfen sudo xcode-select -p. Außerdem habe ich CLTs in installiert /usr/bin, so dass zB which g++angezeigt wird /usr/bin/g++. Wenn ich jedoch zur älteren Xcode-Version wechsle, wird das Paket nicht kompiliert. Interessanterweise finden Sie unten die Ausgabe von g++ -vfür die zwei verschiedenen Versionen von Xcode:

Für Xcode 6.1.1:

g++ -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.1.0
Thread model: posix

Für Xcode 4.6.3:

g++ -v
couldn't understand kern.osversion `14.1.0'
Using built-in specs.
Target: i686-apple-darwin11
Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2336.11~182/src/configure --disable-checking --enable-werror --prefix=/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin11 --enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.11~182/dst-llvmCore/Developer/usr/local --program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11 --target=i686-apple-darwin11 --with-gxx-include-dir=/usr/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)

Also meine Fragen sind:

Worauf couldn't understand kern.osversion 14.1.0bezieht sich die Nachricht? Ist das etwas, worüber ich mir Sorgen machen sollte?

Warum wird es weiterhin angezeigt

--prefix=/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2

in der Ausgabe von g++ -vnach Auswahl der älteren Version, die auf das neue Xcode-Paket verweist, obwohl ich den Xcode-Pfad mit sudo xcode-select -s PATH?

Was ist Ihre bevorzugte Methode, um mehrere Versionen von Xcode, jede mit ihrem eigenen Satz von CLTs, gleichzeitig zu installieren?

Es wäre toll, wenn jemand Klarheit schaffen könnte.

Wenn Sie gcc wirklich brauchen, würde ich eine aktuelle Version über einen Paketmanager installieren, z. B. Macports, Homebrew, oder clang verwenden - der Xcode gcc ist sehr alt, wenn er existiert, was im neuesten Xcode nicht der Fall ist
Was sind die Fehler - möglicherweise hat sich clamng verbessert, um echte Fehler zu finden

Antworten (1)

Sie sind auf dem besten Weg, Dinge zu verwalten.

Lassen Sie Ihren Build-Skriptaufruf xcode-selectden Compiler und die Header auswählen, gegen die Sie jedes Projekt kompilieren möchten. Ich hatte keine Probleme, wenn drei Versionen von Xcode so ausgeführt wurden. (6, 7 und 7.1)