Найти путь установки Xcode по версии

Не существует стандартных путей для хранения разных копий XCode (XCode3 и XCode4) в одной системе. Для моего Makefile или другого процесса сборки на основе командной строки я ищу способ определения пути установки ($DEVELOPER_DIR) XCode определенной версии, чтобы экспортировать этот путь как DEVELOPER_DIR или использовать xcode-select, чтобы сделать его активным.

Пока что я пытаюсь запросить вывод xml system_profiler.

Есть ли другие (более удобные) варианты?

По сути, мне нужен сценарий, чтобы система могла использовать Xcode3 (или Xcode4), не зная пути их установки.

3 ответа

Вот что я придумала до сих пор:

DEVELOPER_DIR=`system_profiler SPDeveloperToolsDataType -xml |\
xpath "//*[text()='spdevtools_version']/following-sibling::string[starts-with(text(),'3')]/../*[text()='spdevtools_path']/following-sibling::string[1]/text()"`

Это устанавливает DEVELOPER_DIR в путь установки Xcode3. Для Xcode4 просто замените "3" на "4"

Это не будет работать должным образом, если установлено несколько версий XCode3.

Это найдет Xcode с заданной версией в папке Applications, если его имя начинается с Xcode:

for xcode in ls /Applications/Xcode*; do
  if grep -q -s -E "<string>$1\.[0-9.]+</string>" "$xcode/Contents/version.plist"; then
    echo "$xcode/Contents/Developer\c"
    break
  fi
done

Сохраните это как findxcode.sh и затем запустите так: ./findxcode.sh 9 и он напечатает вам путь Xcode 9, который вы можете поместить в DEVELOPER_DIR. \c в конце есть удаление новой строки в конце, если вам нужно захватить вывод с помощью другого скрипта /fastlane или чего-то еще.

Вы можете узнать пути установки всех установленных версий XCode из командной строки, запросив базу данных Launch Services с помощью команды lsregister команда.

Чтобы найти все пути установки Xcode3, запустите:

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister  -dump | grep --before-context=2 "com.apple.Xcode" | grep --only-matching "/.*\.app"

Чтобы найти все пути установки Xcode4, запустите:

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister  -dump | grep --before-context=2 "com.apple.dt.Xcode" | grep --only-matching "/.*\.app"

Также посмотрите этот вопрос.

Другие вопросы по тегам