28

这是一个新手问题。我正在尝试将 OpenCV 库添加到 QT 项目中。

这个问题说链接标志由

pkg-config --libs opencv

如果我将命令行输出粘贴到项目文件中,例如:

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

然后一切都编译得很好,但现在这不是可移植的。我怎样才能简单地引用命令的输出?

更新:尝试了 Ken Bloom 的建议,但无法编译。实际生成的编译器命令是

# 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
4

5 回答 5

42
CONFIG += link_pkgconfig
PKGCONFIG += opencv

(我从http://beaufour.dk/blog/2008/02/using-pkgconfig.html得到了这个答案)

于 2010-08-19T00:04:22.237 回答
10

肯的​​回答效果很好。我只需要先删除 += 两侧的空格。

CONFIG+=link_pkgconfig PKGCONFIG+=opencv
于 2010-10-27T18:59:43.153 回答
6

在较新版本的 Qt 中,需要这样做以避免找不到包错误:

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

还必须为 Mac 执行此操作:

mac {
  PKG_CONFIG = /usr/local/bin/pkg-config
}
于 2017-10-17T16:17:09.113 回答
4

你的 qmake 文件中应该有这样的事情

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

编辑:嗯,肯布鲁姆的答案可能更便携,但没有记录在案?

于 2010-08-19T00:07:27.803 回答
3

将以下行添加到您的 .pro 文件中:

INCLUDEPATH += `pkg-config --cflags opencv`
LIBS += `pkg-config --libs opencv`
于 2012-08-20T00:41:48.950 回答