Xcode 4 - построить выходной каталог


217

У меня проблемы с настройкой / поиском выходных файлов в Xcode4 (бета 5). Они размещены где-то в ~/Library/Developer/ugly_path/.... Я даже не могу выбрать "показать в поиске" на моих продуктах. То же самое для простого C-проекта, инструмента Foundation и даже пакета Cocoa. Отладка работает нормально.

Не могли бы вы указать мне, где и как настроить / построить выходные каталоги? (Я знаю, это звучит глупо, я уже несколько месяцев кодирую в Xcode3, но я не могу понять это в бета-версии Xcode4).

Большое спасибо.

Ответы:


342

В меню XCode сверху нажмите «Настройки», выберите вкладку «Местоположения», посмотрите на опцию «Расположение сборки».

У вас есть 2 варианта:

  1. Поместите продукты сборки в производное местоположение данных (рекомендуется)
  2. Размещайте продукты сборки в местах, указанных целями

Обновление: в xcode 4.6.2 вам нужно нажать на кнопку «Дополнительно» с правой стороны под текстовым полем производных данных. Расположение сборки выберите наследие.


27
Этот ответ объясняет , почему это изменение было сделано: stackoverflow.com/questions/5331270/...
toofah

3
Гордый член, что вы имеете в виду, они не в Xcode 5? Они находятся в Предпочтения -> Местоположения -> Производные данные -> Дополнительно.
Ричард Венейбл

Итак, моя сборка идет в .../XCode/DerivedData/папку, достаточно просто. За исключением того, что подпапки кажутся AppName-asdflkjqwergoobledygook. Так как я строю из скрипта, я бы хотел найти сборку (чтобы я мог упаковать ее и отправить через TestFlight :) Как определить, какой из множества MyAppName-xxxx-s является правильным? Спасибо!
Оли

@Olie Вы также можете изменить местоположение производных данных на путь по вашему выбору
Джерард

@Gerard: я мог бы, но это не то, что я хочу сделать. Я проверяю исходники из репозитория, затем строю через командную строку, и я хочу знать, куда пошла сборка. Для моего build-скрипта было бы неуместно каким-либо образом изменять проект (скажем, изменяя настройки проекта).
Olie

140

Если вы строите из командной строки, вы можете установить выходной каталог следующим образом:

xcodebuild -workspace 'WORKSPACE_NAME.xcworkspace' \
           -scheme 'SCHEME_NAME' \
           -configuration 'Release' \
           -sdk iphoneos7.0 CONFIGURATION_BUILD_DIR='OUTPUT_DIRECTORY'

Чтобы мои скрипты работали, мне нужно было удалить одинарные кавычки и написать просто CONFIGURATION_BUILD_DIR = / Users / ...
Станислав Панкевич

@occulus, вы абсолютно правы, так как это не поможет построить цель тестирования после создания проекта, я думаю, что если вы просто создаете его, МОЖЕТ быть в порядке, но лучше использовать абсолютные пути!
Мостафа Берг

В случае, если кто-то еще пытается решить подобную проблему, я убедил XCode 6.x разместить связанный двоичный файл именно там , где он был нужен, используя эту комбинацию:/Users/moi/src/mozbuilds/xul3604/$(CONFIGURATION)/dist/bin
J Evans

29

В Xcode 5: Xcode меню> Настройки ... пункт> Места вкладка> Места подвкладку> Дополнительно ... кнопка> Пользовательские опции.

Затем выберите, например, Относительно рабочей области .


8
Пусть вы доживете до ста лет, сильный и здоровый, сэр. Спасибо !
WhozCraig

13

Если у вас есть параметр Xcode 4 Build Location, установленный на «Поместить продукты сборки в местоположение производных данных (рекомендуется), он должен находиться в ~ / Library / Developer / Xcode / DerivedData. Этот каталог будет содержать ваш проект в качестве каталога, К названию проекта будет добавлено несколько сгенерированных букв, поэтому смотрите внимательно.


10

Сохраняйте производные данные, но используйте DSTROOT, чтобы указать пункт назначения.

Используйте DEPLOYMENT_LOCATION для принудительного развертывания.

Используйте недокументированный DWARF_DSYM_FOLDER_PATH, чтобы скопировать dSYM.

Это позволяет вам использовать производное местоположение данных из xcodebuild и не делать дурацкие вещи, чтобы найти приложение.

xcodebuild -sdk "iphoneos" -workspace Foo.xcworkspace -scheme Foo -configuration "Debug" DEPLOYMENT_LOCATION=YES DSTROOT=tmp DWARF_DSYM_FOLDER_PATH=tmp build

8

Вы всегда можете найти каталог сборки, посмотрев в средство просмотра журнала сборки и скопировав путь туда в окно терминала.

Я использую это для анализа моих пакетов iOS .app перед их установкой, чтобы убедиться, что никакие случайные файлы не включены.


Так удобно Apple. Не!
Zaph

1
И где я могу найти этот журнал сборки? Поиск "журнала сборки" в справке XCode возвращает 0 результатов.
devios1

1
Нм, нашел «Log Navigator», который выглядит как речевой пузырь.
devios1

4

Для тех, кто хочет найти каталог сборки из сценария, но не хочет его изменять, выполните следующую команду, чтобы получить список всех параметров сборки, которые указывают на папку в DerivedData:

xcodebuild -showBuildSettings | grep DerivedData

Если вы используете собственные цели и схемы, пожалуйста, поместите их там:

xcodebuild -workspace "Foo.xcworkspace" -scheme "Bar" -sdk iphonesimulator -configuration Debug -showBuildSettings | grep DerivedData

Посмотрите на выходные данные, чтобы найти нужный параметр, а затем:

xcodebuild -showBuildSettings | grep SYMROOT | cut -d "=" -f 2 - | sed 's/^ *//'

Последняя часть вырезает строку под знаком равенства, а затем обрезает пробел в начале.


2

Если вы используете новые рабочие области Xcode4, вы можете изменить расположение производных данных в меню Файл -> Параметры рабочей области ...


1

Вы можете настроить выходной каталог, используя CONFIGURATION_BUILD_DIRпеременную окружения.

Источник: http://developer.apple.com/library/mac/#documentation/DeveloperTools/Reference/XcodeBuildSettingRef/0-Introduction/introduction.html#//apple_ref/doc/uid/TP40003931-CH1-SW1


нет, это не связано с производным поведением местоположения / наследства (по цели)
Грегори Пакош

Да, это так. Это работает в любом случае. Из документации: «Путь к каталогу. Определяет каталог, в который помещаются все связанные со сборкой файлы для активной конфигурации сборки».
Heath Borders

Нет. не с xcode4 это зависит от Xcode > Preferences > Locations > Derived dataнастроек, как объяснено в ответе с наибольшим количеством голосов. + документ, на который вы ссылаетесь, последний раз обновлялся в 2010 году
Грегори Пакош

Я на самом деле использовал этот параметр, чтобы настроить каталог сборки с xcode4 из xcodebuild. Попробуйте.
Heath Borders

1
хорошо я попробовал с Xcode 4.3.1 (из IDE) и без изменения глобальных настроек, продукты строятся где-то внутри, ~/Library/Developer/Xcode/DerivedData/а не внутри каталога, с которым я указываю CONFIGURATION_BUILD_DIR. Если я хочу CONFIGURATION_BUILD_DIRбыть удостоенным чести, я должен
изменить

0

Еще одна вещь, которую нужно проверить перед началом игры с настройками XCode:

Выберите цель и перейдите к Настройки сборки> Упаковка> Расширение Wrapper

Значение там должно быть: приложение

Если не дважды щелкните по нему и введите «приложение» без кавычек.


-1

Это было так раздражает. Откройте ваш проект, нажмите на Target, откройте вкладку Build Phases. Проверьте свои Ресурсы Пучка Копий для любых красных пунктов.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.