Opencv: 4.0.0 no produce el archivo pkgconfig

Creado en 13 nov. 2018  ·  40Comentarios  ·  Fuente: opencv/opencv

Información del sistema (versión)
  • OpenCV => 4.0.0-rc
  • Sistema operativo / Plataforma => Ubuntu 18.10
  • Compilador => gcc 8.2.0 / gcc 6
Descripción detallada

Hice cmake ... Luego make y luego make install
y no genera el archivo opencv.pc.

Si utilizo los mismos comandos para la versión 3.4.3, se crea el archivo.

Otra cosa
si me vinculo con pkgconfig, entonces se vincula a bibliotecas sin números de versión.
por lo que instalar 4.0.0-rc después de 3.4.3 hace que pkgconfig sea inutilizable.
Sería bueno si hubiera varios archivos opencv.pc como opencv3.4.pc opencv4.pc

builinstall question (invalid tracker) wontfix

Comentario más útil

Tuve el mismo problema, afortunadamente encontré este hilo, y debo estar de acuerdo, no todos usan cmake.
Para cualquiera que se encuentre con este hilo con el mismo problema, usé
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local ..

La clave aquí es: -D OPENCV_GENERATE_PKGCONFIG=YES
Luego continúe compilando e instalando como de costumbre. Lo he comprobado y parece que OpenCV instala el archivo .pc ahora, por lo que no es necesario copiarlo manualmente. El paquete se instalará con el nombre "opencv4", así que use pkg-config --cflags opencv4 .

Todos 40 comentarios

Pkg-config tiene una funcionalidad muy limitada, por lo que se ha eliminado este soporte.

Use CMake con find_package(OpenCV) lugar (con selección de versión múltiple, configuración "sobre la marcha" a través del lenguaje de script, etc.).

Los cambios están aquí:

  • # 12897 # 12896
  • y aqui

¿Hay alguna forma de reintroducir el soporte de pkg-config ? Los archivos .pc que se generan actualmente parecen funcionar para la mayoría de las configuraciones y no todos están usando cmake . Me parece que solo tener una lista de bibliotecas de las que depende OpenCV, así como la información donde se encuentran el encabezado y los archivos .so, ya es suficiente para la mayoría de los casos de uso con pkg-config . ¿O hay alguna limitación al respecto?

La opción OPENCV_GENERATE_PKGCONFIG = ON genera el archivo '.pc'. Creo que también debería generarse de forma predeterminada en los sistemas * nix donde se usa pkg-config. Probé mis archivos binarios con ldd y están vinculados correctamente. Es solo el tiempo de desarrollo cuando pueden ocurrir conflictos. Y creo que también pueden ocurrir los mismos problemas con cmake. Es posible ser más específico que solo -llib. es posible especificar libs exactamente por archivo .so.

CMakeLists.txt:

OCV_OPTION(OPENCV_GENERATE_PKGCONFIG  "Generate .pc file for pkg-config build tool (deprecated)" ON)

no funciona

@codenoid creo que el argumento para esa opción es en realidad YES

ffmpeg se basa en archivos .pc para la dependencia de la biblioteca opencv, FWIW ...

Además, como nota, "make install" no instala el archivo .pc, incluso si se genera: |

Además, como nota, "make install" no instala el archivo .pc, incluso si se genera: |

¿Ha logrado instalar el archivo .pc?

Sí, lo copié manualmente.: |

El martes 15 de enero de 2019 a las 2:20 p.m., Favi0 [email protected] escribió:

Además, como nota, "make install" no instala el archivo .pc, incluso si es
generado: |

¿Ha logrado instalar el archivo .pc?

-
Estás recibiendo esto porque comentaste.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/opencv/opencv/issues/13154#issuecomment-454555451 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAAw0IVOZFkcmQtjPGnwDjxWhzJoO-dxks5vDkYegaJpZM4Ycby9
.

Tuve el mismo problema, afortunadamente encontré este hilo, y debo estar de acuerdo, no todos usan cmake.
Para cualquiera que se encuentre con este hilo con el mismo problema, usé
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local ..

La clave aquí es: -D OPENCV_GENERATE_PKGCONFIG=YES
Luego continúe compilando e instalando como de costumbre. Lo he comprobado y parece que OpenCV instala el archivo .pc ahora, por lo que no es necesario copiarlo manualmente. El paquete se instalará con el nombre "opencv4", así que use pkg-config --cflags opencv4 .

Información del sistema (versión)
  • OpenCV => 4.0.0-rc
  • Sistema operativo / Plataforma => Ubuntu 18.10
  • Compilador => gcc 8.2.0 / gcc 6
Descripción detallada

Hice cmake ... Luego make y luego make install
y no genera el archivo opencv.pc.

Si utilizo los mismos comandos para la versión 3.4.3, se crea el archivo.

Otra cosa
si me vinculo con pkgconfig, entonces se vincula a bibliotecas sin números de versión.
por lo que instalar 4.0.0-rc después de 3.4.3 hace que pkgconfig sea inutilizable.
Sería bueno si hubiera varios archivos opencv.pc como opencv3.4.pc opencv4.pc

opencv 4.0.1 también tiene su pregunta, después de realizar la instalación, no se genera opencv.pc, ni siquiera un archivo pkgconfig

Tuve el mismo problema, afortunadamente encontré este hilo, y debo estar de acuerdo, no todos usan cmake.
Para cualquiera que se encuentre con este hilo con el mismo problema, usé
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local ..

La clave aquí es: -D OPENCV_GENERATE_PKGCONFIG=YES
Luego continúe compilando e instalando como de costumbre. Lo he comprobado y parece que OpenCV instala el archivo .pc ahora, por lo que no es necesario copiarlo manualmente. El paquete se instalará con el nombre "opencv4", así que use pkg-config --cflags opencv4 .

Lo hice como me dijo, pero todavía no había pkgconfig ni opencv.pc ...

Agregué el indicador "-D OPENCV_GENERATE_PKGCONFIG = YES", ejecuté cmake, make y encontré:

... / instalación-unix / opencv4.pc

Como han mencionado otros, "make install" no copió el archivo en ningún lugar bajo / usr / local.
No puedo deducir dónde debería ir opencv4.pc simplemente leyendo la página de manual de pkg-config, en algún lugar debajo de / usr / local, pero ¿exactamente dónde?

También tuve el mismo problema donde make install no copió opencv4.pc , pero estaba usando el zip 4.1.0 de la página de lanzamiento.

@UberEclectic @ Kevin-Mok El archivo opencv4.pc debe copiarse en / usr / local / lib / pkgconfig. No olvide 'sudo ldconfig', para asegurarse de que las bibliotecas OpenCV instaladas recientemente se tengan en cuenta correctamente. RC

Tuve el mismo problema, afortunadamente encontré este hilo, y debo estar de acuerdo, no todos usan cmake.
Para cualquiera que se encuentre con este hilo con el mismo problema, usé
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local ..

La clave aquí es: -D OPENCV_GENERATE_PKGCONFIG=YES
Luego continúe compilando e instalando como de costumbre. Lo he comprobado y parece que OpenCV instala el archivo .pc ahora, por lo que no es necesario copiarlo manualmente. El paquete se instalará con el nombre "opencv4", así que use pkg-config --cflags opencv4 .

No instaló el archivo .cp en mi caso.

Sí, lo copié manualmente.: |
...
El martes 15 de enero de 2019 a las 2:20 p.m. Favi0 @ . * > escribió: También como nota "make install" no instala el archivo .pc, incluso si se genera: | ¿Ha logrado instalar el archivo .pc? - Estás recibiendo esto porque comentaste. Responda a este correo electrónico directamente, véalo en GitHub < https://github.com/notifications/unsubscribe-auth/AAAw0IVOZFkcmQtjPGnwDjxWhzJoO-dxks5vDkYegaJpZM4Ycby9 .

¿Cómo hiciste eso ?, ¡En mi caso ni siquiera he creado el archivo opencv.cp!

Así es como lo hago FWIW opencv 3.4.5

do_make_and_make_install
cp unix-install/opencv.pc $PKG_CONFIG_PATH

El lunes, 29 de abril de 2019 a las 10:26 a.m., [email protected] escribió:

Sí, lo copié manualmente.: |
… <# M_9070919798374828714_>
El martes 15 de enero de 2019 a las 2:20 p.m. Favi0 @ . * > escribió: También como nota
"make install" no instala el archivo .pc, incluso si se genera: | tener
¿Conseguiste instalar el archivo .pc? - Estás recibiendo esto porque
comentó. Responda a este correo electrónico directamente, véalo en GitHub <# 13154
(comentario)
https://github.com/opencv/opencv/issues/13154#issuecomment-454555451 >,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAAw0IVOZFkcmQtjPGnwDjxWhzJoO-dxks5vDkYegaJpZM4Ycby9
.

¿Cómo hiciste eso?

-
Estás recibiendo esto porque comentaste.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/opencv/opencv/issues/13154#issuecomment-487647192 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAADBUGSALBP6IJAXOVIOLTPS4OSLANCNFSM4GDRXS6Q
.

útil si no se usa CMake en proyectos que usan OpenCV

no digas que está obsoleto [1] por favor

[1]
https://github.com/opencv/opencv/commit/73f65b1ccf220572f8cbad6fe06d19f313892db5

En 4.1.0, y lo siguiente no genera un archivo de pc
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local ..

Con 4.1.0, lo hizo funcional. Encontré el error en el comando proporcionado anteriormente. Necesita usar ON, en lugar de YES.

OPENCV_GENERATE_PKGCONFIG=ON

pkg-config --cflags opencv4
-I/usr/include/opencv4/opencv -I/usr/include/opencv4
$ pkg-config --libs opencv4
-lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_gapi -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_video -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core

útil si no se usa CMake en proyectos que usan OpenCV

no digas que está obsoleto [1] por favor

[1]
[73f65b1] (https://github.com/opencv/opencv/commit/73f65b1ccf220572f8cbad6fe06d19f313892db5)

Cambio mi punto de vista, tal vez se pueda llamar obsoleto ...

Entonces, ¿la opción -D OPENCV_GENERATE_PKGCONFIG = ON en cmake está obsoleta ahora? Entonces, ¿cómo podemos obtener los archivos pkgconfig y opencv.pc?

Entonces, ¿la opción -D OPENCV_GENERATE_PKGCONFIG = ON en cmake está obsoleta ahora? Entonces, ¿cómo podemos obtener los archivos pkgconfig y opencv.pc?

si no agrega explícitamente OPENCV_GENERATE_PKGCONFIG = ON no se genera.

Agregué a mi% cmake

-DOPENCV_GENERATE_PKGCONFIG=ON \
-DOPENCV_PC_FILE_NAME=opencv.pc \

Para que los archivos cmake se instalen en la carpeta cmake predeterminada, agrego:

-DOPENCV_CONFIG_INSTALL_PATH=%{_libdir}/cmake/OpenCV \

Por favor, no fuerce a todos a usar CMAKE. Muchos proyectos no usan CMAKE y por buenas razones.

Así que instalé la versión del repositorio AUR de opencv. Esa instalación no generó ningún opencv.pc. Uno de mis proyectos (en C) está usando 'pkg-config opencv --libs' como una de las opciones de creación. ¿Hay alguna manera de generar este opencv.pc sin hacer cmaking desde este repositorio? Quiero tener dos versiones de opencv, una administrada por Pacman y una instalación manual, instalada en mi arco.

Para que los archivos cmake se instalen en la carpeta cmake predeterminada, agrego:

-DOPENCV_CONFIG_INSTALL_PATH=%{_libdir}/cmake/OpenCV \

Tuve un informe de error https://bugzilla.redhat.com/show_bug.cgi?id=1721876
Entonces ahora uso un PATH relativo en OPENCV_CONFIG_INSTALL_PATH

-DOPENCV_CONFIG_INSTALL_PATH=%{_lib}/cmake/OpenCV \

o

-DOPENCV_CONFIG_INSTALL_PATH=lib64/cmake/OpenCV \

@ sergiomb2 El ticket mencionado no se trata del archivo pkg-config (este problema sí).
Hay nuevas correcciones / discusiones sobre la generación de configuraciones de CMake y rutas absolutas / relativas: # 14925 # 14963

Con 4.1.0, lo hizo funcional. Encontré el error en el comando proporcionado anteriormente. Necesita usar ON, en lugar de YES.

OPENCV_GENERATE_PKGCONFIG=ON
....

Esto es correcto, he probado ambos. Cuando se usa ON, opencv4 generará el archivo opencv4.pc en la carpeta ... / pkconfig.

Como nota al margen, hay errores o código obsoleto en los libros para opencv4. Luché durante días para que un ejemplo funcionara. Finalmente obtuve esto y funciona:

cd ~ / opencv / samples / cpp
g ++ opencv_version.cpp $ (pkg-config --cflags --libs opencv4) -o show_version

Hola.

No me gusta poner -1 en una propuesta ya aceptada (pero sesgada), pero aquí una explicación más amplia:

Sería bueno si hubiera varios archivos opencv.pc como opencv3.4.pc opencv4.pc

Si una aplicación es compatible con opencv2 -> opencv5 (si alguna vez el maestro futuro es 5), entonces es bastante fácil confiar en el mismo opencv.pc (cuando se usa pkgconf) y no adaptarse de vez en cuando.

Mi punto para seguir usando opencv.pc por defecto es evitar tener que adaptar aplicaciones cada vez que cambia la versión de opencv.pc. Porque para un mantenedor de paquetes de distribución, es más fácil si todos usan el mismo opencv.pc.
Puede ver el # 16902 para otros comentarios sobre el tema.

Intento OPENCV_GENERATE_PKGCONFIG = ON. pero no trabajo.
Intento OPENCV_GENERATE_PKGCONFIG = YES. pero no trabajo.
Intento -DOPENCV_GENERATE_PKGCONFIG = ON. pero no trabajo.
opencv 4.3.0
Instalo opencv en mi ruta local. como / data / home / xxx / opencv. Yo uso make y make install. o hacer instalar. ambos no funcionan.
Me rindo. Agregaré lib e incluiré el archivo a makefile.

en la opción cmake debe poner -DOPENCV_GENERATE_PKGCONFIG = ON
luego, después de haber realizado el "comando" make, encontrará en su carpeta de compilación una carpeta con el nombre de su sistema operativo (en mi caso, "unix") dentro del archivo .pc

@Nombredeusuariozhx

No olvidó la opción "-D", ¿verdad?

Siempre he tenido un espacio después de -D como en los documentos, como:
-D OPENCV_GENERATE_PKGCONFIG = ACTIVADO

pero escribir sin el espacio aparentemente también funciona:
-DOPENCV_GENERATE_PKGCONFIG = ACTIVADO

Lo siguiente a continuación es una cita de mi script de instalación y la parte cmake definitivamente funciona para opencv 4.2.0. Esta cita no es un script de instalación completo de ninguna manera. Tengo muchas bibliotecas instaladas por separado antes de eso, por lo que debe crear un script propio para sus propios fines. No olvide el ldconfig al final, ya que finaliza algunas cosas de instalación en Linux. También puede que necesite editar sus rutas en ~ / .bashrc. Primero moviendo las cosas descargadas a la carpeta opencv y luego, etc.

mv opencv-4.2.0 opencv
cd opencv
compilación mkdir
construcción de cd

cmake -D CMAKE_BUILD_TYPE = RELEASE -D WITH_QT = ON -D OPENCV_GENERATE_PKGCONFIG = ON -D CMAKE_INSTALL_PREFIX = / usr / local -D WITH_V4L = ON -D WITH_EIGEN = ON -D WITH_OPENGL = ON -D D WITH_XINE = ON -D BUILD_EXAMPLES = ON -D BUILD_PERF_TESTS = OFF -D ENABLE_PRECOMPILED_HEADERS = OFF .. -D INSTALL_C_EXAMPLES = ON -D BUILD_EXAMPLES = ON -D BUILD_opencv_python3 = ON -D BUILD_opencv_python3 = ON / open -D. .

hacer -j6
sudo make install
sudo ldconfig

Compruebe dónde está su opencv4.pc:

Primero muévase hacia arriba, dos veces desde su casa con
discos compactos ..
discos compactos ..

Luego:

sudo find -name opencv4.pc

Debería encontrar algunas carpetas pkg con esto:

sudo find -name pkgconfig

Espero que esto ayude.

PD. La copia de cmake en mi publicación anterior debe ser una sola línea continua sin saltos de línea. Simplemente agregue los saltos de línea adecuados si desea dividirlo manualmente en varias líneas.
Una vez que crea que tiene opencv correctamente instalado, puede probarlo, primero vaya a la carpeta de ejemplos de cpp como:

cd ~ / opencv / samples / cpp

Compile opencv_version.cpp en un archivo de ejecución llamado show_my_version

g ++ opencv_version.cpp $ (pkg-config --cflags --libs opencv4) -o show_my_version

y ejecútalo: ./show_my_version

@dalilander sí. funciona. tan increíble. Gracias por tu amable respuesta.

Me enfrenté a un problema similar después de instalar OpenCV 4.2.0 y no pude encontrar una manera de compilar un programa de C ++ usando CMakeLists.txt. También tenía otras versiones de OpenCV instaladas, así que tuve que proporcionar una ruta específica al compilador. El pkg - configs se estableció y pudo identificar opencv4 gracias a la solución publicada anteriormente para construir OpenCV con _ -D OPENCV_GENERATE_PKGCONFIG=YES _> Aunque tuvo que exportar la ruta del archivo pkg-config .pc a la variable de entorno de esta manera:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/ubuntu/opencv/opencv4/lib/pkgconfig

La forma habitual en la que compilé con OpenCV hasta la versión 3.4.4 era cmake . -DOpenCV_DIR=~/opencv/opencv4/share/ (o / usr / local / share / OpenCV), sin embargo, no funcionó con 4.2.0. Finalmente noté que 4.2.0 no colocó los archivos Config.cmake y Config-version.cmake en el directorio share /. En su lugar, se colocaron en un directorio / lib / cmake / opencv4 / separado. ¡Ahora puedo compilar todos los programas con cmake. -DOpenCV_DIR=(yopur opencv installation location)/opencv4/lib/cmake/opencv4 y todo funciona perfectamente!

También agregué find_package( OpenCV 4.2.0 REQUIRED ) en CMakeLists.txt. No estoy seguro si esta es la mejor manera, ¡pero espero que ayude a otros!

Hola a todos,
Probé las sugerencias anteriores (gracias a
OpenCV es el último disponible en el repositorio de GitHub, v.4.4 https://github.com/opencv/opencv/

Compilé openCV como en el siguiente comando. También probé ... = ON como en ... -D OPENCV_GENERATE_PKGCONFIG = YES

make3 -D CMAKE_BUILD_TYPE = RELEASE -D CMAKE_INSTALL_PREFIX = / usr / local -D INSTALL_C_EXAMPLES = ON -D INSTALL_PYTHON_EXAMPLES = ON -D OPENCV_GENERATE_PKGCONFIG = SÍ -DRA_PATH_MODULOS / usr_build / usr-DRA_PAT_COMPLES / usr_construcción_abrir / usr_pdc_build / usr / open_path_build / usr ..

Luego, seguí los pasos de instalación,

make -j4 (en mi caso es 4)
sudo make install
sudo ln -s /usr/local/lib64/pkgconfig/opencv4.pc / usr / share / pkgconfig /
sudo ldconfig
pkg-config --modversion opencv4

luego, devuelve el siguiente error

@Rasp build] $ pkg-config --modversion opencv4
El paquete opencv4 no se encontró en la ruta de búsqueda de pkg-config.
Quizás debería agregar el directorio que contiene `opencv4.pc '
a la variable de entorno PKG_CONFIG_PATH
No se encontró el paquete 'opencv4'

¿Debo agregar opencv4.pc manualmente? ¿Cómo debo agregarlo?

Los mejores deseos,
yo

@iuri Creo que no exportaste el PKG_CONFIG_PATH como propuse en mi solución. Tienes que hacerlo manualmente. Creo que tu problema se resolverá una vez que lo hagas.
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/ubuntu/opencv/opencv4/lib/pkgconfig

Simplemente reemplace el camino con el suyo.

¡Exactamente!
y ¿por qué no lo exporté?
Debido a que no existe tal archivo llamado Config.cmake ni Config-version.cmake en el directorio share / o / lib. Ni siquiera existen en todo el sistema de archivos. Por cierto, noté que sus ejemplos son para Ubuntu, mi sistema operativo es Centos 7, Arch es armV7L
Ejecuté "buscar" en la línea de comandos, y solo había muestras dentro del directorio openCV.

[ @Rasp ~] $ sudo find / -iname "Config.cmake"
/usr/local/src/opencv_build/opencv/samples/hal/c_hal/config.cmake
/usr/local/src/opencv_build/opencv/samples/hal/slow_hal/config.cmake
[ @Rasp ~] $ sudo find / -iname "Config-version.cmake"
[ @Rasp ~] $

¿Debo instalar pkg_config?
https://stackoverflow.com/questions/28997618/installing-pkg-config-files-to-proper-path-on-centos-with-automake

Los mejores deseos,
yo

Hola,
¡Encontré la respuesta!
De hecho, encontré el problema. Noté que el enlace simbólico estaba asignado a la dirección incorrecta

sudo ln -s /usr/local/lib64/pkgconfig/opencv4.pc / usr / share / pkgconfig /

No hay / lib64 /. Entonces, eliminé ese enlace simbólico, busqué cualquier referencia de opencv.pc en el sistema de archivos, encontré "usr / local / lib / pkgconfig / opencv.pc", luego creé un nuevo enlace simbólico,

ln -s /usr/local/lib/pkgconfig/opencv.pc / usr / share / pkgconfig /

"pkg-config --modversion opencv" ahora devuelve 3.4.11.

Parece que tengo una versión anterior de openCV, que había instalado desde el sistema de administrador de paquetes YUM.

Voy a limpiar esa versión y comenzar desde cero una nueva instalación de OpenCV desde la fuente 4.2.

Los mejores deseos,
yo

¿Fue útil esta página
0 / 5 - 0 calificaciones