Как статически связать с OpenCV в проекте Qt - PullRequest
2 голосов
/ 06 марта 2012

Я бы хотел создать ссылку на библиотеку OpenCV (пакет debian squeeze) в моем проекте Qt. Проект представляет собой обычный проект C ++ без использования библиотек Qt, он просто использует систему сборки Qt (qmake). создать MakeFile.

Я думаю, что библиотека OpenCV в пакете компилируется как статически, так и динамически, потому что в /usr/lib есть .so объекты и .a объекты. Я ищу опции связывания файла проекта Qt, чтобы сказать системе сборки искать статические библиотеки. Я также попытался добавить LIBS+= -static -lcv ,..., но не сработало.

Ответы [ 2 ]

3 голосов
/ 16 июля 2012

У меня было много проблем при попытке развернуть проект, который использовал OpenCV и QT.Статическое связывание в итоге стало ужасной кроличьей ношей, которую, возможно, я недостаточно умен, чтобы понять, но мы придумали то, что я считаю лучшей альтернативой.проверить это, если интересно.Он включает в себя самую сумасшедшую команду, которую я когда-либо видел, написанную:)

Статическая компиляция проекта, использующего много независимых библиотек, может быть непростой задачей.Также могут быть странные юридические проблемы со сборкой других библиотек в ваш двоичный файл, если они не поддерживаются GPL.Вместо этого мы нашли более простой метод для совместного использования двоичного файла и его зависимостей в одном аккуратном небольшом пакете.

Сначала создайте двоичный файл нормального выпуска, как если бы вы только что нормально разрабатывали Next, перейдите в этот каталог выпуска и выполните эту команду.Он скопирует все зависимости, необходимые для двоичного файла, в папку по вашему выбору!

cp `ldd NAMEOFYOURRELEASE | sed -re s/^.+\=\>// | sed -re 's/^(.+) \(.+\)/\1/'` FOLDERNAMETOPUTLIBRARIES/

для NAMEOFYOURRELEASE поместит имя исполняемого двоичного файла, который вы создали,

и для FOLDERNAMETOPUTLIBRARIES поместитеимя папки, в которую вы хотите скопировать все зависимости в 3. Теперь нам нужно указать исполняемому файлу, где искать зависимости, когда он находится на странном новом компьютере.Перейдите в свой .pro-файл для своего проекта и добавьте эти две строки

QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/FOLDERNAMETOPUTLIBRARIES
QMAKE_LFLAGS_RPATH=

Теперь вы сможете перемещать этот двоичный файл и его папку зависимостей куда угодно!

1 голос
/ 06 марта 2012

Попробуйте это:

LIBS += -Wl,-Bstatic -lcv -Wl,-Bdynamic

Источник: http://ubuntuforums.org/showthread.php?t=852552

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...