92 votes

Déterminer la version des outils de ligne de commande xcode

Comment puis-je déterminer quelle(s) version(s) des outils de ligne de commande xcode je possède ?

J'ai essayé de faire

$ 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 version de LLVM d'Apple est-elle la même que celle des outils en ligne de commande xcode ?

2 votes

+1. Il a été très difficile d'élaborer une recherche Google pour trouver une réponse à cette question. J'ai cherché xcode command line tools installed version mais a obtenu beaucoup de matchs sans intérêt. Par ailleurs, la réponse de Dog G. a-t-elle fonctionné pour vous ?

102voto

Mapad Points 3033

La recherche du numéro de version de l'interface CLI dépend de la combinaison de l'OS et des outils CLI installés. L'un de ces outils devrait fonctionner :

Sur Yosemite et Mavericks :

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

sur Mountain Lion :

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

30 votes

Si jamais ils changent à nouveau le nom du pkg, exécuter pkgutil --pkgs | grep -i tools devrait aider à le localiser.

5 votes

Sur MacOS Catalina com.apple.pkg.CLTools_Executables est toujours un bon paquet à utiliser pour cela : pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep version version: 11.3.0.0.1.1574140115

2 votes

@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 '/'. Des idées ?

13voto

EEE Points 233

Dans le terminal, faites

xcodebuild -version

Ou, si vous connaissez le chemin complet de xcodebuild, vous pouvez le précéder. Dans mon cas, j'ai fait

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

exemple de sortie :

Xcode 10.1
Build version 10B61

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

8 votes

J'utilise Mojave ici. xcodebuild -version était ce que je recherchais.

15 votes

Cela ne fonctionne pas si Xcode n'est pas installé. Si seulement les CommandLineTools sont installés, ce chemin n'existe pas.

8 votes

Mais la question portait sur les outils de ligne de commande - ne sont-ils pas à des numéros de version différents ?

10voto

DrStrangepork Points 362

Pour les versions de MacOS X 10.9 Mavericks et ultérieures, ce code vous fournira la version de Xcode et de Command Line Tools for Xcode, si l'un ou l'autre est installé :

# 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

1 votes

Vous pouvez utiliser pkgutil --pkgs=com.apple.pkg.Xcode > /dev/null (et pkgutil --pkgs=com.apple.pkg.CLTools_Executables > /dev/null ) pour éviter de devoir grep le résultat de pkgutil --pkgs .

0 votes

Merci pour le code ci-dessus ! Cela a bien fonctionné.

6voto

Peter Hanley Points 661

Pour les versions modernes de xcode, la commande xcode-select --version affichera le numéro de version des outils de ligne de commande, que Xcode.app soit installé ou non.

Je réponds par rapport à la version la plus récente (où les outils se trouvent dans le pkg Xcode.app), mais je suis presque sûr que si le chemin et la sortie retournés par xcode-select -p , gcc -v et llvm-gcc -v/clang -v sont harmonieux, alors ils doivent être identiques, c'est-à-dire que

$ 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

Notez que llvm-gcc est un lien vers clang,

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

Ainsi, la sortie de llvm-gcc -v y clang -v devraient être identiques, bien que cela puisse ou non être le cas pour vous (voir https://stackoverflow.com/a/5708732/602581 pour plus de détails)

9 votes

La version que ces outils produisent n'est pas nécessairement la même que celle des outils de la ligne de commande Xcode. Exemple, clang --version renvoie à Apple LLVM version 7.3.0 (clang-703.0.31) tandis que celle de Doc G. pkgutil les retours de commande version: 7.3.1.0.1.1461711523 .

1voto

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

Travaux pour Montery (OS 12.xx)

0 votes

En quoi cela diffère-t-il des autres réponses comme apple.stackexchange.com/a/181994/237

0 votes

1-Confirmé pour fonctionner avec la dernière version de MacOS 2-inclus grep pour filtrer les informations superflues

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X