Ermitteln Sie die Version der xcode-Befehlszeilentools

Wie kann ich feststellen, welche Version(en) von xcode-Befehlszeilentools ich habe?

Ich habe versucht zu tun

$ 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

Ist die Apple LLVM-Version dieselbe wie die Version der xcode-Befehlszeilentools?

+1. Es war wirklich schwierig, eine Google-Suche zu erstellen, um eine Antwort darauf zu finden. Ich habe gesucht xcode command line tools installed version, aber viele irrelevante Übereinstimmungen gefunden. Übrigens, hat die Antwort von Hund G. für Sie funktioniert?

Antworten (6)

Das Auffinden der CLI-Versionsnummer hängt von der Kombination ab, welches bestimmte Betriebssystem und welche bestimmten CLI-Tools installiert sind. Eine davon sollte funktionieren:

Auf Version 10.9 und höher (OS X Yosemite bis macOS Monterey):

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

unter OS X 10.8 (Mountain Lion):

pkgutil --pkg-info=com.apple.pkg.DeveloperToolsCLI
Wenn sie den Paketnamen jemals wieder ändern, pkgutil --pkgs | grep -i toolssollte das Ausführen helfen, es zu finden.
Unter macOS ist Catalina com.apple.pkg.CLTools_Executablesimmer noch ein gutes Paket dafür: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 '/'.Ideen??
@Seamus, hört sich so an, als hätten Sie die CLI-Tools nicht installiert. Das bekomme ich auf 10.15.4, wenn ich nach dem alten Paketnamen suche: pkgutil --pkg-info=com.apple.pkg.DeveloperToolsCLI No receipt for 'com.apple.pkg.DeveloperToolsCLI' found at '/'.Ich bin auf einer neuen 10.15.4-Installation, auf der ich zuerst die CLI-Tools installiert habe, bevor ich Xcode 11.4.1 installiert habe:pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep version version: 11.4.1.0.1.1586360307
@phatblat: Danke für das Feedback, aber die CL-Tools sind definitiv installiert - frage mich, warum Apple dieses Versionierungsgeschäft so schlecht definiert lässt? ... Oh, streich das - ich glaube, ich kenne die Antwort :)
Wo werden die Informationen abgerufen?

Im Terminal tun

xcodebuild -version

Wenn Sie den vollständigen Pfad von xcodebuild kennen, können Sie diesen voranstellen. In meinem Fall habe ich es getan

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

Beispielausgabe:

Xcode 10.1
Build version 10B61

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

Verwenden Sie hier Mojave. xcodebuild -versionwar, was ich suchte.
Dies funktioniert nicht, wenn Xcode nicht installiert ist. Wenn nur die CommandLineTools installiert sind, existiert dieser Pfad nicht.
Aber die Frage war für die Kommandozeilen-Tools - haben sie nicht unterschiedliche Versionsnummern?
Gibt es in Big Sur nicht
Dadurch wird nur die Xcode-Version angezeigt , nicht die Version der Befehlszeilentools , die unterschiedlich sein kann.

Für Versionen von macOS X 10.9 Mavericks und höher stellt Ihnen dieser Code die Version von Xcode und den Befehlszeilentools für Xcode bereit, sofern beide installiert sind:

# 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
Sie können pkgutil --pkgs=com.apple.pkg.Xcode > /dev/null(und pkgutil --pkgs=com.apple.pkg.CLTools_Executables > /dev/null) verwenden, um zu vermeiden, dass grepdas Ergebnis von pkgutil --pkgs.

Für moderne Versionen von xcode zeigt der Befehl xcode-select --versiondie Versionsnummer der Befehlszeilentools an, unabhängig davon, ob Xcode.app installiert ist oder nicht.

Ich antworte gegen die neuere Version (wo sich die Tools tatsächlich im Xcode.app-Paket befinden), aber ich bin mir ziemlich sicher, dass, wenn der von xcode-select -p, gcc -v, und zurückgegebene Pfad und die Ausgabe llvm-gcc -v/clang -vharmonisch sind, sie gleich sein sollten, dh

$ 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

Beachten Sie, dass llvm-gcc ein Link zu clang ist,

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

Die Ausgabe von llvm-gcc -vund clang -vsollte also identisch sein, obwohl dies für Sie der Fall sein kann oder nicht (siehe https://stackoverflow.com/a/5708732/602581 für weitere Details) .

Die Version, die diese Tools ausgeben, stimmt nicht unbedingt mit der Version der Xcode-Befehlszeilentools überein. Beispiel gibt clang --versionzurück , während der Befehl Apple LLVM version 7.3.0 (clang-703.0.31)von Doc G. zurückgibt . pkgutilversion: 7.3.1.0.1.1461711523

Ich hatte sicher XCode Commandline Tools installiert, aber nicht XCode selbst.

Keine der verfügbaren Antworten, um die Version zu erhalten, funktionierte. pkgutilhat mir das Paket der XCode-Befehlszeilentools nicht mit keinem der vorgeschlagenen Paketnamen gegeben.

Da ich XCode nicht installiert hatte (und es auch nicht benötigte), konnte ich auch nicht in den Einstellungsdialogen nachsehen.

xcode-select --versiongab mir nur die Version von xcode-selectsich selbst, ohne Hinweis auf die Version der Befehlszeilentools.

softwareupdate --listsagte mir, dass alles auf dem neuesten Stand sei.

Ich wusste jedoch, dass meine Version veraltet sein muss, da mir der Installer für eines der Homebrew-Pakete dies mitteilte!

Wie ich schließlich herausgefunden habe, welche Version der XCode Commandline Tools installiert ist bin ich über den Befehl gestolpert:

softwareupdate --history

Was 12.3 als die letzte aktualisierte Version aufführte ...

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  

Wenn Sie also sicher sind, dass die Kommandozeilen-Tools installiert sind (weil es Ihnen zum Beispiel xcode-select --installsagt), aber keine der anderen Methoden funktioniert, überprüfen softwareupdate --historySie !

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

Funktioniert für Montery (OS 12.xx)

Wie sich diese von anderen Antworten wie apple.stackexchange.com/a/181994/237 unterscheiden
1-Bestätigt, dass es mit der neuesten Version von MacOS 2 funktioniert, in dem grep enthalten ist, um irrelevante Informationen herauszufiltern