Estoy usando OpenCV con gcc y cmake. Y encontré un tutorial https://docs.opencv.org/3.4 .0 / db / df5 / tutorial_linux_gcc_cmake.html. En el archivo CMakeLists.txt, hay algunas variables como OpenCV y OpenCV_INCLUDE_DIRS.

cmake_minimum_required(VERSION 3.9)
project(VideoRecord)

set(CMAKE_CXX_STANDARD 11)
find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(VideoRecord main.cpp)
target_link_libraries(VideoRecord ${OpenCV_LIBS})

Quiero saber dónde encontrar la definición de estas variables.

EDITAR

Gracias la respuesta de @ qbranchmaster. Traté de buscar FindOpenCV.cmake pero fallé.

Primer intento.

➜  ~ cmake --help-module-list | grep "FindOpen"
FindOpenACC
FindOpenAL
FindOpenCL
FindOpenGL
FindOpenMP
FindOpenSSL
FindOpenSceneGraph
FindOpenThreads

Otro intento.

➜  / find . "FindOpenCV.cmake"

Además, mi sistema operativo es osx e Instala cmake con brew. Compilo e instalo OpenCV manualmente.

2
CoXier 16 ene. 2018 a las 09:58

3 respuestas

La mejor respuesta

Estas variables son parte de la secuencia de comandos de configuración del paquete que se envía con OpenCV.

Tenga en cuenta que find_package es de dos cabezas bestia. El modo clásico de operación es encontrar bibliotecas a través de scripts de búsqueda. Este sigue siendo el enfoque que se usa hoy en día para bibliotecas de terceros que no conocen CMake. Sin embargo, si su dependencia se está construyendo con CMake, puede proporcionar un archivo de configuración de paquete, que permite un modo de operación más potente.

La idea aquí es que, en lugar de decirle a CMake cómo encontrar una dependencia, la dependencia en sí le dice a CMake cómo los clientes pueden encontrarla. Este es el enfoque que toman las bibliotecas como OpenCV y Qt.

Para responder a su pregunta, el archivo de configuración del paquete está configurando esas variables en su instalación local de OpenCV, cuya plantilla se puede encontrar en el código fuente de OpenCV en cmake/templates/OpenCVConfig.cmake.in.

4
ComicSansMS 16 ene. 2018 a las 09:13

Se definen en el módulo CMake OpenCV. CMake tiene numerosos módulos que ayudan a encontrar varias bibliotecas como OpenCV (módulo FindOpenCV.cmake). Con este comando puede obtener una lista de módulos que admite su CMake:

cmake --help-module-list

Algunas bibliotecas vienen con sus propios módulos * .cmake que deben instalarse en alguna ruta del sistema. Si está utilizando Ubuntu, sus módulos cmake deben estar localizados en:

 /usr/share/cmake/Modules/

Si no, solo busque el sistema para el archivo FindOpenCV.cmake. En ese archivo encontrarás estas variables.

0
qbranchmaster 16 ene. 2018 a las 07:11

En general, obtiene nombres de variables de la documentación o el código fuente del paquete que desea encontrar.

A menudo puede derivar el nombre para poner en find_package del nombre del archivo del módulo FindFoo.cmake proporcionado, porque "Foo" sería el nombre. El módulo de búsqueda forma parte de CMake o viene con la biblioteca de terceros.
Si no hay un módulo de búsqueda, algunos módulos proporcionan archivos FooConfig.cmake, donde "Foo" es nuevamente la cadena para poner en find_package.
Si no tiene un archivo de búsqueda ni de configuración, debe buscar la biblioteca por otros medios, por ejemplo, FindPkgConfig o find_library / find_file.

0
usr1234567 16 ene. 2018 a las 07:56
48275576