2011-05-13 23 views
17

Wiem, że zostało to zadane kilka razy, ale głównie dla Xcode 3.x. Dla iPad, mam dwa projekty zarówno żyjących we wspólnym obszarze roboczymXcode 4: Jak dodać zależność docelowej biblioteki statycznej do projektu

  • Foo, aplikacja widok oparte i
  • Foolib statyczny biblioteki

były w zależności od Cocoa Touch drugi. Wydaje mi się, że nie jestem w stanie obliczyć, jak dodać tę zależność. To nie jest dobrze wyjaśnione w dokumentacji, więc próbowałem następujące:

  1. Kliknij projektu Foo w obszarze nawigacji po lewej stronie,
  2. wybrać Build etapach aż górna i rozwinąć sekcję docelowa Zależności
  3. Kliknij przycisk plusa, ale wynikowa lista jest pusta.

Próbowałem również przeciągnąć/upuścić plik .a do tej sekcji, z niewielkim sukcesem. Ponadto dokumentacja wskazuje

Jeśli produkt budowy jednego projektu w obszarze roboczym jest zależna od produktu kompilacji innego projektu w przestrzeni roboczej (na przykład, jeśli jeden projekt buduje bibliotekę używany przez inny projekt), Xcode odkrywa takie niejawne zależności i buduje we właściwej kolejności.

Zastanawiam się, jak Xcode odkrywa te zależności. Czy Apple twierdzi, że wcale nie muszę dodawać tej zależności docelowej? Ale w jaki sposób Xcode odkryłby, że jeden używa drugiego?

Wreszcie, muszę jakoś zdobyć pliki .h od Foolib po Foo. Jaki jest zalecany sposób robienia tego? Oczywiście, nie chcę po prostu ich kopiować. W przypadku frameworku dołączane są pliki nagłówkowe, ale co zwykle robią ludzie podczas pracy z bibliotekami statycznymi, które same tworzą równolegle.

Przyciągnięcie w dobrym kierunku byłoby bardzo cenne. Dziękuję Ci.

Odpowiedz

13

Generalnie Xcode 4 wydaje się automatycznie odkrywać zależności, jak sugeruje arkusz Edit Scheme. Inni deweloperzy wspomnieli, że zależności nie są automatycznie wykrywane i wymagają jawnego ich wymieniania:

A więc Edycja schematu -> Kompilacja -> dodawanie celów z obszaru roboczego.

Jeśli chodzi o pliki nagłówkowe biblioteki statycznej, wydaje się, że Xcode 4 ma problem, przynajmniej z uzupełnianiem kodu i podświetlaniem składni. Jedynym sposobem, jaki mogę uzyskać, jest prawidłowe działanie z klasami w bibliotekach statycznych w celu przeciągnięcia kopii plików nagłówkowych, o których mowa, do lokalizacji w folderze grupy w głównym projekcie. Zauważ, że powinieneś odznaczyć Dodaj do celu ... To dba o podświetlanie składni i uzupełnianie kodu. Resztę należy obsłużyć, nadając mu właściwą ścieżkę wyszukiwania nagłówka. Będzie to Ścieżka wyszukiwania nagłówka użytkownika = $ (BUILT_PRODUCTS_DIR) - w zależności od tego, jak skonfigurujesz preferencje dotyczące lokalizacji.

Zobacz: this link

+1

Dziękuję za to. Dodanie celu do schematu sprawia, że ​​Xcode tworzy Foolib przed Foo, prawda? Ale wydaje mi się, że muszę w jakiś sposób dostać libFoolib.a do mojego projektu Foo, w przeciwnym razie dostanę błędy linkera, prawda?W tej chwili nie mogę nawet zmusić Fooliba do zbudowania; Cóż, pomyślnie się buduje, ale potem libFoolib.a w grupie Products pozostaje czerwony. Masz pojęcie, co się tam dzieje? – McKrassy

+0

Mam problemy z architekturą AMR lub i386 w zależności od działania na urządzeniu lub emulatorze. Może to jest Twój problem (podczas kompilacji biblioteki statycznej na jednej architekturze projekt przy użyciu tej biblioteki stara się połączyć z biblioteki z inną architekturą ...) –

+0

@MPenades yup) rzeczywiście trzeba czytać o uniwersalnych bibliotek ** ** sprawdź ten tutorial. http://www.raywenderlich.com/41377/creating-a-static-library-in-ios-tutorial – Resty