2009-03-10 11 views
24

Zbudowałem narzędzie wiersza poleceń (narzędzie Foundation) w Xcode, używając Cocoa. Narzędzie korzysta z frameworka innej firmy.Używanie struktur w narzędziu wiersza poleceń

Wszystko działa poprawnie w Xcode, ale jak mogę wdrożyć ten program?

Jeśli uruchomię aplikację z Findera, nie będzie ona mogła znaleźć biblioteki, ponieważ jest ona wyświetlana w ../Frameworks/etc. Czy mogę statycznie łączyć się ze strukturą zewnętrzną?

+0

Sprawdź odpowiedź na podobne pytanie tutaj -> http://stackoverflow.com/a/19230699/986 –

Odpowiedz

20

Niestety, nie ma sposobu na połączenie frameworka z narzędziem wiersza poleceń w OS X i podejrzewam, że framework, z którym się łączysz, spodziewa się, że zostanie dołączony do pakietu Frameworks/katalog aplikacji. Jeśli masz dostęp do źródłowego kodu źródłowego, możesz skompilować bibliotekę statyczną i statycznie połączyć ją z aplikacją (lub podać źródło bezpośrednio w celu aplikacji). Jeśli nie masz kodu źródłowego lub nie chcą statycznie połączyć bibliotekę z jakiegoś powodu, istnieją dwie pozostałe opcje:

  1. Jeśli masz dostęp do całego systemu/Library/Frameworks folder, możesz tam zainstalować framework innej firmy. Wymaga to ustawienia ścieżki instalacji (ustawienia kompilacji INSTALL_PATH) w ramce na /Library/Frameworks w czasie kompilacji lub użycia install_name_tool do zmiany ścieżki instalacji ramek na /Library/Frameworks (jeśli nie masz kodu źródłowego frameworka).

  2. Utwórz pakiet aplikacji (tak, jakbyś tworzył aplikację GUI) za pomocą narzędzia wiersza polecenia jako plik wykonywalny pakietu aplikacji (np. W AppBundle.app/Contents/MacOS/). Następnie możesz skopiować framework innej firmy do katalogu frameworków pakietu aplikacji. Następnie możesz umieścić pakiet aplikacji w dowolnym miejscu i utworzyć dowiązanie symboliczne do narzędzia wiersza poleceń.

Opcja 1 jest zdecydowanie bardziej akceptowanym podejściem, ale użyłem opcji 2, gdy istniał ważny powód.

Możesz znaleźć więcej informacji na temat budowania, łączenia i instalowania frameworków w Apple Frameworks Programming Guide.

+0

# 2 to zdecydowanie nietradycyjne podejście, które zawsze lubię widzieć ... Zastanawiam się jednak - może byłby również sposób na użycie INSTALL_NAME_TOOL install name tool, aby to zrobić? Co myślisz? –

+0

Czy ktokolwiek mógłby rozwinąć _how_ do instalacji projektu ramowego w/Library/Frameworks? W moim przypadku mam nadzieję zainstalować GRDB.swift do użycia w innym projekcie. – kjb

+0

Jest to istotne ponownie, ponieważ Swift obecnie wymaga narzędzi wiersza poleceń, aby uzyskać dostęp do biblioteki standardowej Swift w ramach, gdzieś. kjb, twój instalator powinien móc dodać do/Library/Frameworks. – balthisar

8

Innym sposobem, jeśli masz kod źródłowy dla frameworka, jest dodanie statycznego obiektu biblioteki i zbudowanie z niego statycznej biblioteki. Następnie możesz statycznie połączyć go z narzędziem wiersza poleceń.

+0

okrzyki kolegi! statyczne powiązania zła droga! – Stoff81

+4

Swift nie jest obsługiwany dla bibliotek statycznych :( – iksnae

Powiązane problemy