2012-12-19 18 views
13

Pracowałem z XCode 4.5.2 i zauważyłem, że jeśli indeksujesz, musisz zatrzymać wszystko i pozwolić mu to zrobić, albo zostaniesz ugrzęziony. Stało się to problemem, ponieważ projekt jest duży, a indeksowanie zajmuje dużo czasu i robi to ciągle. Jednym z przykładów było zaindeksowanie całego projektu, po tym, jak trochę pracowałem nad projektem, który zaczął ponownie indeksować prawie 75% projektu. Sprawdziłem z kontrolą źródła i nie było żadnych zmian w projekcie w czasie, w którym nad nim pracowałem.Zatrzymanie xcode z indeksowania

Czy istnieje sposób całkowitego zatrzymania indeksowania lub zmniejszenia liczby indeksowań? Czy są jakieś minusy wyłączania indeksowania? Czytałem w poprzednich pytaniach, gdzie powiedziano, że uniemożliwiały automatyczne uzupełnianie i przeszukiwanie projektu.

Odpowiedz

25

Wystarczy uruchomić to polecenie w terminalu, aby wyłączyć indeksowania:

defaults write com.apple.dt.XCode IDEIndexDisable 1 

Aby włączyć go ponownie uruchomić to:

defaults write com.apple.dt.XCode IDEIndexDisable 0 

(Uwaga: Podobno trzeba usunąć ten klucz aby zmiana mogła wpłynąć, użyłem po prostu powyższego polecenia i działało poprawnie. Więc jeśli wykonanie powyższego nie działa, spróbuj usunąć klucz)

EDYTOWANIE

Przepraszamy, pominięto część pytania. Tak, sprawi, że wyszukiwanie nie zadziała tak szybko. Być może autouzupełnianie zostanie wyłączone. Indeksowanie pozwala Xcode szybko zapamiętać, co zrobiłeś. Wyłączenie go nieco utrudni pracę, ale poprawia czas ładowania.

+0

trzeba rzeczywiście usunąć klucz ponownie włączyć indeksowanie, zobacz http://stackoverflow.com/questions/7328041/how-to- enable-indexing-in-xcode-4 –

+0

@StephanTolksdorf, Hmm, użyłem powyższego polecenia i zostało ono ponownie włączone. Ale na wszelki wypadek zaktualizowałem swoją odpowiedź. Dzięki! – Josiah

+9

To nie wydaje się działać dla mnie w Xcode 5.1. –

2

Jeśli pracujesz nad dużym projektem i generujesz xcodeproj za pomocą cmake, pojawią się problemy podczas dodawania dużych plików binarnych. Jeśli cmake nie rozpoznaje rozszerzenia, domyślnie nazywa je "kodem źródłowym"!

... a pliki binarne zostaną następnie zindeksowane przez kod xcode, co oznacza, że ​​urządzenie stale indeksuje (i zaczyna od początku za każdym razem, gdy ponownie tworzysz obszar roboczy). Również find-in-files nie będzie działać (po prostu się zawiesi).

Jednym z łatwych rozwiązań jest tagowanie plików binarnych i nakazanie ignorowania ich przez xcode, np. tak (cmake 3.2 i wyższe, inaczej XCODE_EXPLICIT_FILE_TYPE nie jest obsługiwany):

# fill cmake-variable with some files 
file(GLOB MYGAME_BINARIES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "binaries/*") 
# tag them as "not-sourcecode" (maybe there is sth better than 'compiled', but it worked for my purpose) 
set_source_files_properties(${MYGAME_BINARIES} PROPERTIES XCODE_EXPLICIT_FILE_TYPE "compiled")