Đây chỉ là một câu trả lời một phần vì tôi cũng chưa tìm ra cách để làm điều này với các thư viện OpenCV. (Đã phát hiện ra. Hãy xem bản cập nhật bên dưới.) Nhưng tôi đã thực hiện nó với các thư viện khác (SM2DGraphView).
Có ba điều mà cần phải xảy ra:
Bạn cần phải sao chép các thư viện OpenCV rằng chương trình của bạn sử dụng vào gói ứng dụng. Để làm điều đó (trong Xcode 3, anyway), thêm một giai đoạn Copy Files build vào mục tiêu của bạn. Kéo tệp thư viện từ danh sách tệp của Xcode vào giai đoạn xây dựng. Bấm đúp vào mục Sao chép Tệp và đặt đích đến Khung.
Lưu ý rằng bạn cần đảm bảo rằng thư viện mà bạn đưa vào trong dự án Xcode của bạn là một tệp thư viện chứ không phải là liên kết tượng trưng đến tệp thư viện. Nếu không, chỉ có liên kết tượng trưng sẽ được sao chép vào gói ứng dụng của bạn.
Đường dẫn cài đặt của tệp khuôn khổ OpenCV cần phải được đặt thành @executable_path/../Framework
. Nếu khung công tác đã được xây dựng trong Xcode, bạn sẽ làm điều này trong cài đặt dự án. Vì OpenCV không được xây dựng trong Xcode, bạn cần thực hiện sau khi thực tế với chương trình dòng lệnh install_name_tool
: install_name_tool -id @executable_path/../Frameworks libopencv_imgproc.2.3.1.dylib
. Bạn sẽ có thể thiết lập điều này trong một giai đoạn xây dựng Script Run trong mục tiêu của bạn.
Thực thi cần tìm thư viện trong thư mục Frameworks
của gói. Đây là nơi tôi hiện đang mắc kẹt.
Cập nhật
tôi thấy lệnh install_name_tool đúng để có được những chương trình để xem các thư viện (và các thư viện để xem các thư viện khác). Thông tin trên the Qt page for deploying OS X programs là chìa khóa.
Tôi chạy otool -L
vào file thực thi trong Contents/MacOS thư mục chương trình của tôi và thấy điều này [dòng không liên quan bị gỡ bỏ]:
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)
Vì vậy, tôi đã sử dụng các lệnh này (trong khi ở Contents/MacOS thư mục) để có được những chương trình để nhìn vào nơi thích hợp cho thư viện:
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
Sau đó, tôi chuyển sang Contents/thư mục Khung và sử dụng các lệnh này để nói với các thư viện, nơi họ đã được cài đặt:
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
Bây giờ thư viện imgproc cần phải được cho biết nơi để tìm các thư viện lõi và highgui cần phải được cho biết nơi để tìm lõi và 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
Tôi vẫn đang chạy vào một vấn đề mà highgui đang tìm kiếm rất nhiều thư viện trong/opt/local/bin nhưng tôi khá tự tin rằng phần OpenCV của vấn đề được giải quyết. Bây giờ tôi chỉ cần đưa tất cả các lệnh này vào một giai đoạn xây dựng trong Xcode.
nếu giải pháp không giúp bạn, bạn có thể giải thích cho chúng tôi những gì bạn mong đợi hơn không? cảm ơn rất nhiều, Julien – jmartel