2010-08-19 6 views
20

Esta es una pregunta un poco nueva. Estoy tratando de agregar las bibliotecas de OpenCV a un proyecto de QT.Vinculación de bibliotecas a un proyecto de QT usando la salida pkg-config

This question dice las banderas de enlace están dadas por

pkg-config --libs opencv 

Si me pega la salida de línea de comandos en el archivo de proyecto como:

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

entonces todo compila bien, pero ahora esto no es portátil. ¿Cómo puedo simplemente hacer referencia a la salida del comando?

Actualización: Intenté la sugerencia de Ken Bloom, pero no se compilará. Los comandos reales compilador generados son

# 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

¿Qué versión de qt? y qmake tienes? Las sugerencias de Ken deberían funcionar, pero no estoy seguro de a qué versión de qt se agregaron. Además, podría publicar su archivo pro completo, ya que también podría haber errores que causan problemas tales como los que ve. – rasjani

Respuesta

29
CONFIG += link_pkgconfig 
PKGCONFIG += opencv 

(Tengo esta respuesta de http://beaufour.dk/blog/2008/02/using-pkgconfig.html)

+0

Creo que está en la línea correcta, pero no funciona. Actualizaré la pregunta. – MVG

+0

Quizás el sitio del que lo obtuve estaba equivocado. No lo he probado yo mismo. –

+1

Debería funcionar bien en 4.6 qt al menos (donde lo he probado y todavía lo uso). Solo "gotcha" es que, si esta biblioteca opencv está instalada * después de * qmake ha creado makefile una vez (y make file todavía existe), ejecutar make o incluso qmake no hace que las cosas funcionen mágicamente. Por lo tanto, make distclean && qmake y makefile nuevo deben crearse con las librerías adecuadas para la compilación. – rasjani

5

Algo como esto en su archivo qmake debe hacer

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

Editar: Hmm, Ken Bloom La respuesta puede ser más portátil, pero ¿no está documentado?

+1

Esto funciona! Las herramientas de construcción son obra del diablo. – MVG

9

Soy nuevo en stackoverflow, por lo que aún no puedo comentar ... La respuesta de Ken fue genial. Solo tuve que eliminar los espacios a cada lado del + = primero.

CONFIG+=link_pkgconfig PKGCONFIG+=opencv 
+0

Para mac con opencv instalado a través de macports, use: 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

Añadir las siguientes líneas a su archivo .pro:

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

En la versión más reciente de Qt, esto debe ser hecho para evitar un paquete no se encuentra el error:

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

También tenía que hacer esto para Mac:

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