31 Stimmen

Verknüpfung von Bibliotheken mit einem QT-Projekt unter Verwendung der pkg-config-Ausgabe

Dies ist eine Frage für einen Neuling. Ich versuche, die OpenCV-Bibliotheken zu einem QT-Projekt hinzuzufügen.

Diese Frage besagt, dass die Verknüpfungskennzeichen wie folgt lauten

pkg-config --libs opencv

Wenn ich die Befehlszeilenausgabe wie folgt in die Projektdatei einfüge:

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

dann lässt sich alles gut kompilieren, aber jetzt ist es nicht mehr portabel. Wie kann ich einfach auf die Ausgabe des Befehls verweisen?

Update: Ich habe den Vorschlag von Ken Bloom ausprobiert, aber er lässt sich nicht kompilieren. Die tatsächlich generierten Compiler-Befehle sind

# 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

44voto

Ken Bloom Punkte 54770
CONFIG += link_pkgconfig
PKGCONFIG += opencv

(Diese Antwort erhielt ich von http://beaufour.dk/blog/2008/02/using-pkgconfig.html )

10voto

Salida Software Punkte 446

Die Antwort von Ken hat gut funktioniert. Ich musste nur zuerst die Leerzeichen auf beiden Seiten des += entfernen.

CONFIG+=link_pkgconfig PKGCONFIG+=opencv

6voto

SteveEng Punkte 301

In der neueren Version von Qt muss dies getan werden, um einen Fehler "Paket nicht gefunden" zu vermeiden:

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

Musste dies auch für Mac tun:

mac {
  PKG_CONFIG = /usr/local/bin/pkg-config
}

4voto

nicomen Punkte 1174

Etwas wie dieses in Ihrer qmake-Datei sollte genügen

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

Edit: Hmm, die Antwort von Ken Bloom ist vielleicht besser übertragbar, aber ähm nicht dokumentiert?

3voto

RawMean Punkte 7818

Fügen Sie die folgenden Zeilen in Ihre .pro-Datei ein:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X