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

217

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

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

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

kubbing
источник

Ответы:

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 меню> Настройки ... пункт> Места вкладка> Места подвкладку> Дополнительно ... кнопка> Пользовательские опции.

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

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

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

bxiong
источник
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 перед их установкой, чтобы убедиться, что никакие случайные файлы не включены.

radven
источник
Так удобно 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, вы можете изменить расположение производных данных в меню Файл -> Параметры рабочей области ...

DaGaMs
источник
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

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

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

Hasan
источник
-1

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

marbleblue
источник