Связывание библиотек с проектом QT с использованием вывода pkg-config - PullRequest
23 голосов
/ 19 августа 2010

Это вопрос новичка.Я пытаюсь добавить библиотеки OpenCV в проект QT.

В этом вопросе говорится, что флаги связи задаются как

pkg-config --libs opencv

Если я вставлю вывод командной строкив файл проекта, например:

LIBS += -L/usr/local/lib -lml -lcvaux -lhighgui -lcv -lcxcore

, тогда все компилируется нормально, но теперь это не переносимо.Как я могу просто сослаться на вывод команды?

Обновление: пробовал предложение Кена Блума, но оно не скомпилируется.Фактически сгенерированные команды компилятора:

# How it should be, at least on my machine
g++ -o QOpenCVTest main.o qopencvtest.o moc_qopencvtest.o -L/usr/lib -L/usr/local/lib -lml -lcvaux -lhighgui -lcv -lcxcore -lQtGui -lQtCore -lpthread

# with CONFIG and PKGCONFIG
g++ -o QOpenCVTest main.o qopencvtest.o moc_qopencvtest.o -L/usr/lib -lQtGui -lQtCore -lpthread

Ответы [ 5 ]

33 голосов
/ 19 августа 2010
CONFIG += link_pkgconfig
PKGCONFIG += opencv

(я получил ответ от http://beaufour.dk/blog/2008/02/using-pkgconfig.html)

10 голосов
/ 27 октября 2010

Ответ Кена сработал отлично.Мне просто нужно было удалить пробелы по обе стороны от + = сначала.

CONFIG+=link_pkgconfig PKGCONFIG+=opencv
4 голосов
/ 17 октября 2017

В более новой версии Qt это нужно сделать, чтобы избежать ошибки "пакет не найден":

QT_CONFIG -= no-pkg-config
CONFIG += link_pkgconfig
PKGCONFIG += protobuf #or whatever package here

Также нужно было сделать это для Mac:

mac {
  PKG_CONFIG = /usr/local/bin/pkg-config
}
4 голосов
/ 19 августа 2010

Что-то подобное в вашем файле qmake должно сделать

LIBS += `pkg-config --libs opencv`

Редактировать: Хм, ответ Кена Блума может быть более переносимым, но не задокументировано?

3 голосов
/ 20 августа 2012

Добавьте следующие строки в ваш файл .pro:

INCLUDEPATH += `pkg-config --cflags opencv`
LIBS += `pkg-config --libs opencv`
...