Clasificación de errores de compilación al usar varias versiones diferentes de Xcode

Estoy en Yosemite e intento compilar un paquete de software usando g++. La compilación de este paquete en particular funcionó anteriormente en Mountain Lion con Xcode 4.6.3, pero ahora tengo Xcode 6.1.1 y el software no compila. Por esta razón, me gustaría poder cambiar entre diferentes versiones de Xcode. Debo decir que estoy trabajando exclusivamente con las herramientas de línea de comandos (CLT), makey g++similares. Ahora instalé una versión anterior de Xcode, la 4.6.3, por lo que la situación es la siguiente:

  • /Aplicaciones/Xcode.app: versión actual de Xcode, 6.1.1
  • /Aplicaciones/Xcode4.6.3/Xcode.app: versión anterior de Xcode, 4.6.3

Estaba planeando cambiar entre estos dos usando sudo xcode-select -s PATH. Por lo que puedo decir, este comando funciona y puedo verificar el resultado usando sudo xcode-select -p. Además, tengo CLT instalados en /usr/bin, por lo que, por ejemplo, which g++muestra /usr/bin/g++. Aún así, si cambio a la versión anterior de Xcode, el paquete no se compilará. Curiosamente, encuentre a continuación el resultado de g++ -vlas dos versiones diferentes de Xcode:

Para 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

Para 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)

Entonces mis preguntas son:

couldn't understand kern.osversion 14.1.0¿A qué se refiere el mensaje ? ¿Es esto algo por lo que debería estar preocupado?

¿Por qué sigue apareciendo?

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

en el resultado de g++ -vdespués de seleccionar la versión anterior, apuntando al nuevo paquete de Xcode, aunque cambié la ruta de Xcode usando sudo xcode-select -s PATH?

¿Cuál es su forma preferida de tener varias versiones de Xcode, cada una con su propio conjunto de CLT, instaladas al mismo tiempo?

Sería genial si alguien pudiera aclarar las cosas.

Si realmente necesita gcc, instalaría una versión actualizada a través de un administrador de paquetes, por ejemplo, macports, homebrew o uso clang: Xcode gcc es muy antiguo si existe, lo que no ocurre en el último Xcode
¿Cuáles son los errores? Posiblemente clamng haya mejorado para encontrar errores reales.

Respuestas (1)

Usted está en la mejor manera de administrar las cosas.

Haga que su secuencia de comandos de compilación llame xcode-selectpara elegir el compilador y los encabezados con los que prefiere compilar cada proyecto. No he tenido ningún problema al ejecutar tres versiones de Xcode. (6, 7 y 7.1)