2010-08-19 7 views
20

Ceci est une question de débutant. J'essaie d'ajouter les bibliothèques OpenCV à un projet QT.Liaison de bibliothèques à un projet QT à l'aide de la sortie pkg-config

This question dit les drapeaux de liaison sont donnés par

pkg-config --libs opencv 

Si je colle la sortie de ligne de commande dans le fichier de projet comme:

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

alors tout compile bien, mais maintenant ce n'est pas portable. Comment puis-je simplement référencer la sortie de la commande?

Mise à jour: J'ai essayé la suggestion de Ken Bloom, mais elle ne sera pas compilée. Les commandes du compilateur générés réels sont

# 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 
+0

Quelle version de qt et qmake avez-vous? Les suggestions de Ken devraient fonctionner mais je ne sais pas à quelle version de qt celles-ci ont été ajoutées. Aussi, pourriez-vous poster votre fichier pro complet car il pourrait également y avoir des bugs qui causent des problèmes tels que vous voyez. – rasjani

Répondre

29
CONFIG += link_pkgconfig 
PKGCONFIG += opencv 

(j'ai eu cette réponse de http://beaufour.dk/blog/2008/02/using-pkgconfig.html)

+0

Je pense que c'est sur la bonne voie mais ça ne marche pas vraiment. Je vais mettre à jour la question. – MVG

+0

Peut-être que le site dont je l'ai eu était erroné. Je ne l'ai pas testé moi-même. –

+1

Cela devrait fonctionner correctement sur 4.6 qt atleast (où j'ai testé et toujours utilisé). Seul "gotcha" est que, si cette librairie opencv est installée * après que * qmake ait créé makefile une fois (et que le fichier existe toujours), exécuter make ou même qmake lui-même ne fait pas fonctionner les choses magiquement. Donc, make distclean && qmake et new makefile devraient être créés avec les bibliothèques appropriées pour la compilation. – rasjani

5

Quelque chose comme ceci dans votre fichier qmake devrait faire

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

Edit: Hmm, Ken Bloom réponse pourrait être plus portable, mais erhm pas documenté?

+1

Cela fonctionne! Les outils de construction sont l'œuvre du diable. – MVG

9

Je suis tout nouveau à stackoverflow donc je ne peux pas encore commenter ... La réponse de Ken a bien fonctionné. J'ai juste dû enlever les espaces de chaque côté du + = premier.

CONFIG+=link_pkgconfig PKGCONFIG+=opencv 
+0

Pour un mac avec opencv installé via macports, utilisez: LIBS + =/opt/local/lib/libcxcore.dylib LIBS + =/opt/local/lib/libcvaux.dylib LIBS + =/opt/local/lib/libcv.dylib LIBS + =/opt/local/lib/libhighgui.dylib LIBS + =/opt/local/lib/libml.dylib –

3

Ajoutez les lignes suivantes à votre fichier .pro:

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

Dans la nouvelle version de Qt, ce qui doit être fait pour éviter un paquet non trouvé erreur:

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

Également devait faire cela pour Mac:

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