2011-07-28 9 views
7

Pracuję nad aplikacją OpenCV i moje pytanie brzmi: jak mogę wdrożyć i rozpowszechnić aplikację na komputerach innych niż deweloperskie, na których nie ma zainstalowanego OpenCV?Rozmieszczanie i dystrybucja aplikacji OpenCV za pomocą Xcode4 na Mac OSX

Używam Xcode4 na Mac OS X Lion z OpenCV 2.2.

dzięki

+0

jeśli to rozwiązanie Ci nie pomoże, możesz wyjaśnić nam lepiej, czego się spodziewasz? wielkie dzięki, Julien – jmartel

Odpowiedz

1

Co radzę jest użycie wieloplatformowym kompilacji Builder (jak ulepszony autotool). Bardzo popularnym jest CUpewnij który nie jest tak łatwe w obsłudze, ale nie tak trudne, nie tylko wspólne jeden, jest ona wykorzystywana przez OpenCV ...

  • 1) Napisz aplikację na jednym komputerze i pisać cUpewnij (nie zapomnij napisać część użyć OpenCV cUpewnij)

  • 2) przekazać swoje pliki cUpewnij i bibliotekę OpenCV do maszyny non-rozwojowej

  • 3) Budowanie z skrypt CWprowadä aplikacja na platformie docelowej, jeśli napisałeś ją poprawnie, możesz zbudować opencv (używając własnego OpenCV Cmake) i zbudować swoją aplikację na (z tym, który napisałeś)

Jeśli chcesz pójść dalej, możesz utworzyć kreatora instalacji lub pakiet z CPack w celu zautomatyzowania wszystkiego.

Here is the link where you can download it

Julien,

+0

Dzięki, spróbuję tego. Ale chcę wdrożyć aplikację dla osób nietechnicznych. Czytałem, że powinno być możliwe kopiowanie plików biblioteki do folderu aplikacji w celu dystrybucji na komputerach bez OpenCV. Ale to nie działa dla mnie ... :( – sn3ek

+0

Na pewno, jeśli zrobisz skrypt i skorzystasz z kreatora instalacji, nie rozumiem, dlaczego nie byłoby to dla osób nietechnicznych ... Przynajmniej jeśli wiedzą, jak kliknąć dalej, powinno to wystarczyć: p – jmartel

+1

Nie ma potrzeby instalowania bibliotek oddzielnie przez użytkownika końcowego OS X pozwala na osadzanie bibliotek w pakietach aplikacji. Jest to "poprawne" podejście do komputerów Mac Eliminuje zewnętrzne zależności i zapewnia używanie oczekiwanych wersji bibliotek – SSteve

4

Jest to tylko częściowa odpowiedź, bo ja też jeszcze nie zorientowali się, jak to zrobić z bibliotek OpenCV. (Wyobraź to sobie Zobacz aktualizację poniżej:) Ale zrobiłem to z innymi bibliotekami (SM2DGraphView).

Są trzy rzeczy, które muszą się wydarzyć:

  1. trzeba skopiować biblioteki OpenCV, że program używa się wiązki aplikacji. Aby to zrobić (w Xcode 3, tak), dodaj fazę kompilacji Copy Files do celu. Przeciągnij pliki biblioteki z listy plików Xcode do fazy budowy. Kliknij dwukrotnie element Kopiowanie plików i ustaw miejsce docelowe na Frameworki.
    Pamiętaj, że musisz upewnić się, że biblioteka dołączona do projektu Xcode jest plikiem biblioteki, a nie dowiązaniem symbolicznym do pliku biblioteki. W przeciwnym razie tylko plik symboliczny zostanie skopiowany do pakietu aplikacji.

  2. Ścieżkę instalacji plików szkieletowych OpenCV należy ustawić na @executable_path/../Framework. Jeśli framework został zbudowany w Xcode, zrobiłbyś to w ustawieniach projektu. Ponieważ OpenCV nie jest budowane w Xcode, musisz to zrobić po fakcie z programem wiersza poleceń install_name_tool: install_name_tool -id @executable_path/../Frameworks libopencv_imgproc.2.3.1.dylib. Powinieneś być w stanie ustawić to w fazie budowania Run Script w twoim celu.

  3. Plik wykonywalny musi znaleźć bibliotekę w katalogu Frameworks pakietu. Właśnie tam utknąłem.

Aktualizacja

znalazłem komendy prawidłowa install_name_tool dostać program widzieć bibliotek (i bibliotek, aby zobaczyć inne biblioteki). Informacje o the Qt page for deploying OS X programs były kluczowe.

Pobiegłem otool -L na pliku wykonywalnego w katalogu Contents/MacOS mój program i zobaczył to stanowisko [non-odpowiednie linie usunięte]:

lib/libopencv_core.2.3.dylib (compatibility version 2.3.0, current version 2.3.1) 
lib/libopencv_imgproc.2.3.dylib (compatibility version 2.3.0, current version 2.3.1) 
lib/libopencv_highgui.2.3.dylib (compatibility version 2.3.0, current version 2.3.1) 

więc użyłem tych poleceń (podczas gdy w treści katalogu/MacOS) dostać się do programu, aby spojrzeć w odpowiednim miejscu dla bibliotek:

install_name_tool -change lib/libopencv_core.2.3.dylib @executable_path/../Frameworks/libopencv_core.2.3.1.dylib CocoaCVTest 
install_name_tool -change lib/libopencv_imgproc.2.3.dylib @executable_path/../Frameworks/libopencv_imgproc.2.3.1.dylib CocoaCVTest 
install_name_tool -change lib/libopencv_highgui.2.3.dylib @executable_path/../Frameworks/libopencv_highgui.2.3.1.dylib CocoaCVTest 

Potem zmieniła się zawartość katalogu/ram i stosować te polecenia, aby powiedzieć biblioteki, gdzie zostały one zainstalowane:

install_name_tool -id @executable_path/../Frameworks/libopencv_core.2.3.1.dylib libopencv_core.2.3.1.dylib 
install_name_tool -id @executable_path/../Frameworks/libopencv_imgproc.2.3.1.dylib libopencv_imgproc.2.3.1.dylib 
install_name_tool -id @executable_path/../Frameworks/libopencv_highgui.2.3.1.dylib libopencv_highgui.2.3.1.dylib 

Teraz biblioteka imgproc musi być poinformowani, gdzie znaleźć biblioteki rdzenia i highgui musi być poinformowani, gdzie znaleźć rdzeń i imgproc:

install_name_tool -change lib/libopencv_core.2.3.dylib @executable_path/../Frameworks/libopencv_core.2.3.1.dylib libopencv_imgproc.2.3.1.dylib 
install_name_tool -change lib/libopencv_core.2.3.dylib @executable_path/../Frameworks/libopencv_core.2.3.1.dylib libopencv_highgui.2.3.1.dylib 
install_name_tool -change lib/libopencv_imgproc.2.3.dylib @executable_path/../Frameworks/libopencv_imgproc.2.3.1.dylib libopencv_highgui.2.3.1.dylib 

jestem nadal działa do problemu gdzie highgui szuka wielu bibliotek w/opt/local/bin, ale jestem dość pewny, że część problemu OpenCV została rozwiązana. Teraz potrzebuję tylko tych wszystkich poleceń do fazy budowy w Xcode.