2013-09-30 20 views
5

Mam projekt Xcode, który jest zasadniczo pojedynczą aplikacją, która jest wbudowana w kilka prawie identycznych celów. Przeniosłem prawie wszystkie ustawienia konfiguracji kompilacji w centralnych miejscach, ale nie mogę wymyślić, jak przenieść linkowanie do statycznej biblioteki (libMantle.a) do xcconfig. Próbowałem flagi -framework i -l, jak używam do różnych innych bibliotek, ale nie działają. Czy istnieje sposób na pobranie plików .a z panelu Link Binary with Libraries, więc nie muszę synchronizować wszystkich celów ręcznie?Binarny link z biblioteką statyczną w xcconfig

Odpowiedz

2

Zdobione ...

Powiedzmy, że chcemy połączyć przeciwko pliku libGoogleAnalyticsServices.a. Zasadniczo istnieją trzy rzeczy, które powinieneś mieć w swoim pliku .xcconfig, aby działało.

Najpierw należy się upewnić, że ścieżka do biblioteki znajduje się w ścieżce wyszukiwania. Następnie musisz podać dwie flagi, aby linker był szczęśliwy -L ze ścieżką do katalogu i -l z biblioteką.

Kładzenie to wszystko razem będzie Ci coś takiego:

LIBRARY_SEARCH_PATHS = $(inherited) "$(SRCROOT)/Vendor/Google Analytics" 
OTHER_LDFLAGS = $(inherited) -L"$(SRCROOT)/Vendor/Google Analytics" -lGoogleAnalyticsServices 

(będzie trzeba dostosować do swoich ścieżek względnych)

Najbardziej pomocne jest w coraz to załatwione było Log Navigator (polecenie + 8 w Xcode). Umieszczając bibliotekę statyczną w panelu Build Fazy Link Binary With Libraries i wykonując udaną kompilację, możesz przejrzeć szczegóły etapu łączenia w dziennikach i zobaczyć, w jaki sposób przekazywała bibliotekę Analytics do kompilatora. Stamtąd po prostu replikuje te flagi w Xcconfig.

+0

Czy mogę zapytać, jak radzisz sobie z plikami źródłowymi dla różnych celów? Czy dodajesz je również do plików xcconfig? Czy to w ogóle jest możliwe? – vinzenzweber

+0

Pliki xcconfig specyficzne dla celu stają się dość nieporządne, ponieważ nie ma naprawdę dobrego sposobu na zrobienie tego. Rzadko mam projekty, których cele mają drastycznie różne zależności od bibliotek. Co konkretnie próbujesz zrobić? – farski

+0

Mam projekt z 9 celami. Potrzebuję tylko tych obiektów, aby ustawić JEDEN POJEDYNCZY makroprocesor dla każdego celu. Głównie w celu zmiany podstawowego adresu URL interfejsu API dla różnych środowisk (tworzenie, wdrażanie, produkcja). Dlatego chciałbym mieć pojedynczy plik, który określa podstawową konfigurację kompilacji, w tym wszystkie pliki źródłowe i zasoby do skopiowania. – vinzenzweber

Powiązane problemy