Найти путь установки Xcode по версии - PullRequest
5 голосов
/ 08 мая 2011

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

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

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

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

Ответы [ 3 ]

1 голос
/ 08 мая 2011

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

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.

0 голосов
/ 18 октября 2018

Это найдет 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 или чем-то еще.

0 голосов
/ 08 мая 2011

Вы можете узнать пути установки всех установленных версий 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"

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

...