Xcode 4 - buduj katalog wyjściowy

217

Mam problemy z konfiguracją / lokalizacją plików wyjściowych w Xcode4 (beta 5). Są gdzieś umieszczone ~/Library/Developer/ugly_path/.... Nie mogę nawet wybrać „pokaż w wyszukiwarce” w moich produktach. To samo dotyczy prostego projektu C, narzędzia Foundation, a nawet pakietu kakao. Debugowanie działa dobrze.

Czy możesz mi wskazać, gdzie i jak skonfigurować / zbudować katalogi wyjściowe? (Wiem, że to brzmi głupio, kodowałem w Xcode3 od miesięcy, ale nie mogę tego rozgryźć w Xcode4 beta).

Wielkie dzięki.

kubbing
źródło

Odpowiedzi:

342

Z menu Xcode na górze kliknij preferencje, wybierz kartę lokalizacji, spójrz na opcję lokalizacji kompilacji.

Masz 2 opcje:

  1. Umieść produkty kompilacji w lokalizacji danych pochodnych (zalecane)
  2. Umieść produkty do budowania w lokalizacjach określonych przez cele

Aktualizacja: W xcode 4.6.2 musisz kliknąć przycisk zaawansowany po prawej stronie poniżej pola tekstowego danych pochodnych. Kompilacja lokalizacji wybierz starszą wersję.

Wielebny
źródło
27
Ta odpowiedź wyjaśnia, dlaczego wprowadzono tę zmianę: stackoverflow.com/questions/5331270/…
toofah
3
Dumny członek, co masz na myśli, że nie ma ich w Xcode 5? Są w Preferencjach -> Lokalizacje -> Dane pochodne -> Zaawansowane.
Richard Venable
Ok, więc moja kompilacja trafia do .../XCode/DerivedData/folderu, dość prosta. Tyle że podfoldery wydają się być AppName-asdflkjqwergoobledygook. Ponieważ buduję ze skryptu, chciałbym znaleźć kompilację (aby ją spakować i wysłać przez TestFlight :) Jak ustalić, która z wielu MyAppName-xxxx-s jest właściwa? Dzięki!
Olie,
@Olie Możesz również zmienić lokalizację danych pochodnych na wybraną przez siebie ścieżkę
Gerard
@ Gerard: Mógłbym, ale nie to chcę robić. Sprawdzam źródła z repozytorium, a następnie buduję za pomocą wiersza poleceń i chcę wiedzieć, gdzie poszła kompilacja. Byłoby niewłaściwe dla mojego skryptu kompilacji modyfikowanie projektu w jakikolwiek sposób (powiedzmy przez zmianę ustawień projektu).
Olie,
140

Jeśli budujesz z wiersza poleceń, możesz ustawić katalog wyjściowy w następujący sposób:

xcodebuild -workspace 'WORKSPACE_NAME.xcworkspace' \
           -scheme 'SCHEME_NAME' \
           -configuration 'Release' \
           -sdk iphoneos7.0 CONFIGURATION_BUILD_DIR='OUTPUT_DIRECTORY'
Igor
źródło
Aby moje skrypty sh działały, musiałem usunąć pojedyncze cudzysłowy i napisać tylko CONFIGURATION_BUILD_DIR = / Users / ...
Stanislav Pankevich
@occulus, masz absolutną rację, ponieważ nie powiedzie się to w budowaniu celu testowego po zbudowaniu projektu, myślę, że jeśli tylko go budujesz, MOGĄ być w porządku, ale lepiej użyj ścieżek bezwzględnych!
Mostafa Berg
W przypadku, gdy ktoś inny próbuje rozwiązać podobny problem, przekonałem XCode 6.x, aby umieścił połączony plik binarny dokładnie tam , gdzie był potrzebny, za pomocą tej kombinacji:/Users/moi/src/mozbuilds/xul3604/$(CONFIGURATION)/dist/bin
J Evans
29

W Xcode 5: Xcode menu> Preferencje ... item> Lokalizacje TAB> Lokalizacje podzakładkę> Zaawansowane ... button> niestandardowa opcja.

Następnie wybierz np. Relative to Workspace .

Grumdrig
źródło
8
Niech pan dożyje stuletniego, silnego i zdrowego pana. Dziękuję !
WhozCraig
13

Jeśli masz ustawienie lokalizacji kompilacji Xcode 4 ustawione na „Umieść produkty kompilacji w lokalizacji danych pochodnych (zalecane), powinna ona znajdować się w ~ / Library / Developer / Xcode / DerivedData. Ten katalog będzie zawierał twój projekt jako katalog do nazwy projektu zostanie dołączona wiązka wygenerowanych liter, więc spójrz uważnie.

bxiong
źródło
10

Zachowaj dane pochodne, ale użyj narzędzia DSTROOT, aby określić miejsce docelowe.

Użyj DEPLOYMENT_LOCATION, aby wymusić wdrożenie.

Użyj nieudokumentowanej DWARF_DSYM_FOLDER_PATH, aby również skopiować dSYM.

Dzięki temu możesz użyć pochodnej lokalizacji danych z xcodebuild i nie musisz robić zwariowanych rzeczy, aby znaleźć aplikację.

xcodebuild -sdk "iphoneos" -workspace Foo.xcworkspace -scheme Foo -configuration "Debug" DEPLOYMENT_LOCATION=YES DSTROOT=tmp DWARF_DSYM_FOLDER_PATH=tmp build
Gabriel
źródło
8

Zawsze możesz znaleźć katalog kompilacji, przeglądając przeglądarkę dziennika kompilacji i kopiując tam ścieżkę do okna terminala.

Używam tego do analizowania moich pakietów .app dla systemu iOS, zanim zostaną one zainstalowane, aby upewnić się, że nie zostaną uwzględnione zbłąkane pliki.

radven
źródło
Taki wygodny Apple. Nie!
zaph
1
I gdzie mogę znaleźć ten dziennik kompilacji? Wyszukiwanie „dziennika budowania” w pomocy Xcode zwraca 0 wyników.
devios1
1
Nm, znalazł „Log Navigator”, który wygląda jak dymek.
devios1
4

Dla każdego, kto chce znaleźć katalog kompilacji ze skryptu, ale nie chce go zmieniać, uruchom następujące polecenie, aby uzyskać listę wszystkich ustawień kompilacji wskazujących folder w DerivedData:

xcodebuild -showBuildSettings | grep DerivedData

Jeśli uruchamiasz niestandardowe cele i schematy, umieść je tam również:

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

Sprawdź dane wyjściowe, aby znaleźć żądane ustawienie wyjściowe, a następnie:

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

Ostatnia część odcina łańcuch przy znaku równości, a następnie przycina białe znaki na początku.

Berend Klein Haneveld
źródło
2

Jeśli używasz nowych obszarów roboczych Xcode4, możesz zmienić lokalizację danych pochodnych w obszarze Plik -> Ustawienia obszaru roboczego ...

DaGaMs
źródło
1

Możesz skonfigurować katalog wyjściowy za pomocą CONFIGURATION_BUILD_DIRzmiennej środowiskowej.

Źródło: http://developer.apple.com/library/mac/#documentation/DeveloperTools/Reference/XcodeBuildSettingRef/0-Introduction/introduction.html#//apple_ref/doc/uid/TP40003931-CH1-SW1

Granice zdrowia
źródło
nie, to nie ma związku z zachowaniem lokalizacji pochodnej / starszej lokalizacji (na cel)
Gregory Pakosz
Tak to jest. Działa tak czy inaczej. Z dokumentacji: „Ścieżka katalogu. Identyfikuje katalog, w którym znajdują się wszystkie pliki związane z kompilacją dla aktywnej konfiguracji kompilacji”.
Heath Borders
nie. nie z xcode4 zależy to od Xcode > Preferences > Locations > Derived dataustawienia, jak wyjaśniono w najczęściej głosowanej odpowiedzi. + dokument, o którym mowa, został ostatnio zaktualizowany w 2010 r.
Gregory Pakosz
Właściwie użyłem tego ustawienia do skonfigurowania katalogu kompilacji z xcode4 z xcodebuild. Spróbuj.
Heath Borders
1
cóż, próbowałem z Xcode 4.3.1 (z IDE) i bez zmiany globalnego ustawienia, produkty są budowane gdzieś indziej, ~/Library/Developer/Xcode/DerivedData/a nie w katalogu, który określam CONFIGURATION_BUILD_DIR. Jeśli chcę CONFIGURATION_BUILD_DIRbyć zaszczycony, muszę zmienić preferencje danych pochodzących z Xcode na „Dziedzictwo”
Gregory Pakosz
0

Kolejną rzeczą do sprawdzenia przed rozpoczęciem gry z preferencjami Xcode jest:

Wybierz cel i przejdź do Ustawienia kompilacji> Pakowanie> Rozszerzenie opakowania

Wartość powinna wynosić: app

Jeśli nie, kliknij dwukrotnie i wpisz „app” bez qoutes.

Hasan
źródło
-1

To było bardzo denerwujące. Otwórz projekt, kliknij opcję Cel, otwórz kartę Fazy kompilacji. Sprawdź zasoby pakietu kopii pod kątem jakichkolwiek czerwonych elementów.

marmurkowy
źródło