Determinar la versión de las herramientas de línea de comandos de xcode

¿Cómo determino qué versión(es) de las herramientas de línea de comandos de xcode tengo?

traté de hacer

$ gcc --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.1.0
Thread model: posix

¿La versión de Apple LLVM es la misma que la versión de las herramientas de línea de comandos de xcode?

+1. Fue realmente difícil crear una búsqueda en Google para encontrar una respuesta a esto. Busqué xcode command line tools installed versionpero obtuve muchas coincidencias irrelevantes. Por cierto, ¿te funcionó la respuesta de Dog G.?

Respuestas (6)

Encontrar el número de versión de CLI depende de la combinación de qué sistema operativo en particular y qué herramientas de CLI en particular están instaladas. Uno de estos debería funcionar:

En las versiones 10.9 y posteriores (OS X Yosemite a macOS Monterey):

pkgutil --pkg-info=com.apple.pkg.CLTools_Executables

en OS X 10.8 (Mountain Lion):

pkgutil --pkg-info=com.apple.pkg.DeveloperToolsCLI
Si alguna vez vuelven a cambiar el nombre del paquete, la ejecución pkgutil --pkgs | grep -i toolsdebería ayudar a localizarlo.
En macOS Catalina com.apple.pkg.CLTools_Executablessigue siendo un buen paquete para usar para esto:pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep version version: 11.3.0.0.1.1574140115
@phatblat: Catalina 10.15.4, fm zsh CL: pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep version==> No receipt for 'com.apple.pkg.CLTools_Executables' found at '/'.Ideas??
@Seamus, parece que no tiene instaladas las herramientas CLI. Eso es lo que obtengo en 10.15.4 cuando busco el nombre del paquete anterior: pkgutil --pkg-info=com.apple.pkg.DeveloperToolsCLI No receipt for 'com.apple.pkg.DeveloperToolsCLI' found at '/'.estoy en una instalación nueva de 10.15.4 en la que instalé las herramientas CLI primero antes de instalar Xcode 11.4.1:pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep version version: 11.4.1.0.1.1586360307
@phatblat: Gracias por los comentarios, pero las herramientas CL definitivamente están instaladas. Me pregunto por qué Apple deja este negocio de control de versiones tan mal definido. Oh, borra eso, creo que sé la respuesta :)
¿Dónde se recupera la información?

En la terminal hacer

xcodebuild -version

O, si conoce la ruta completa de xcodebuild, puede anteponerla. En mi caso lo hice

/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -version

salida de ejemplo:

Xcode 10.1
Build version 10B61

(adaptado de https://www.garron.me/en/bits/what-xcode-version-am-i-running.html ).

Usando Mojave aquí. xcodebuild -versionera lo que estaba buscando.
Esto no funciona si Xcode no está instalado. Si solo se instalan CommandLineTools, esta ruta no existe.
Pero la pregunta era para las herramientas de línea de comandos: ¿no tienen números de versión diferentes?
No existe en Big Sur
Esto solo muestra la versión de Xcode, no la versión de las herramientas de la línea de comandos , que puede ser diferente.

Para las versiones de macOS X 10.9 Mavericks y posteriores, este código le proporcionará la versión de Xcode y Command Line Tools para Xcode, si están instaladas:

# Xcode
if pkgutil --pkgs=com.apple.pkg.Xcode >/dev/null; then
    echo Xcode: $(pkgutil --pkg-info=com.apple.pkg.Xcode | awk '/version:/ {print $2}')
else
    echo Xcode: not installed
fi

# Command Line Tools for Xcode
if pkgutil --pkgs=com.apple.pkg.CLTools_Executables >/dev/null; then
    echo CommandLineTools: $(pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | awk '/version:/ {print $2}')
else
    echo CommandLineTools: not installed
fi
Puede usar pkgutil --pkgs=com.apple.pkg.Xcode > /dev/null(y pkgutil --pkgs=com.apple.pkg.CLTools_Executables > /dev/null) para evitar tener que obtener grepel resultado de pkgutil --pkgs.

Para las versiones modernas de xcode, el comando xcode-select --versionmostrará el número de versión de las herramientas de la línea de comandos, ya sea que Xcode.app esté instalado o no.

Estoy respondiendo en contra de la versión más reciente (donde las herramientas realmente están en el paquete Xcode.app), pero estoy bastante seguro de que si la ruta y la salida devueltas por xcode-select -p, gcc -vy llvm-gcc -v/clang -vson armoniosas, entonces deberían ser las mismas, es decir

$ xcode-select -p
/Applications/Xcode.app/Contents/Developer

$ gcc -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.3.0
Thread model: posix

$ llvm-gcc -v
Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.3.0
Thread model: posix

$ clang -v
Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.3.0
Thread model: posix

Tenga en cuenta que llvm-gcc es un enlace a clang,

$ls -al /usr/bin/llvm-gcc
lrwxr-xr-x  1 root  wheel  5 Oct 19  2014 /usr/bin/llvm-gcc -> clang

por lo tanto, la salida de llvm-gcc -vy clang -vdebe ser idéntica, aunque ese puede ser su caso o no (consulte https://stackoverflow.com/a/5708732/602581 para obtener más detalles)

La versión que generan estas herramientas no es necesariamente la misma que la versión de las herramientas de línea de comandos de Xcode. Ejemplo, clang --versiondevuelve , mientras que el comando Apple LLVM version 7.3.0 (clang-703.0.31)del Doc G. devuelve . pkgutilversion: 7.3.1.0.1.1461711523

Seguro que tenía instaladas las herramientas de línea de comandos XCode, pero no XCode.

Ninguna de las respuestas disponibles para hacer funcionar la versión. pkgutilno me dio el paquete de XCode Commandline Tools, sin ninguno de los nombres de paquete sugeridos.

Al no tener XCode instalado (y no necesitarlo), tampoco pude buscar en los cuadros de diálogo de configuración de eso.

xcode-select --versionsolo me dio la versión de xcode-selectsí mismo, sin tener idea de la versión de las herramientas de línea de comandos.

softwareupdate --listme dijo que todo estaba al día.

Sin embargo, sabía que mi versión debía estar desactualizada, ya que el instalador de uno de los paquetes homebrew me lo dijo.

Cómo finalmente descubrí qué versión de XCode Commandline Tools está instalada, me topé con el comando:

softwareupdate --history

Que enumeró 12.3 como la última versión que actualizó ...

Display Name                                       Version    Date                  
------------                                       -------    ----                  
Safari                                             14.0       04/11/2020, 12:26:12  
Command Line Tools for Xcode                       12.1       04/11/2020, 22:38:33  
Safari                                             14.0.2     15/12/2020, 16:38:27  
Safari                                             14.0.1     15/12/2020, 16:38:27  
Command Line Tools for Xcode                       12.3       15/12/2020, 16:38:27  
macOS Big Sur                                      11.2.1     14/02/2021, 20:57:56  
macOS Big Sur 11.2.2                               11.2.2     08/03/2021, 09:02:20  

Entonces, cuando esté seguro de que las herramientas de la línea de comandos están instaladas (porque, por ejemplo, xcode-select --installse lo indica) pero ninguno de los otros métodos funciona, verifique softwareupdate --history!

pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep version

Funciona para Montery (OS 12.xx)

En qué se diferencia esto de otras respuestas como apple.stackexchange.com/a/181994/237
1-Confirmado para trabajar con la versión más reciente de MacOS 2-incluye grep para filtrar información superflua