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.
3 respuestas
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
.
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.
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
.
Nuevas preguntas
c++
C ++ es un lenguaje de programación de propósito general. Originalmente fue diseñado como una extensión de C, y tiene una sintaxis similar, pero ahora es un lenguaje completamente diferente. Use esta etiqueta para preguntas sobre el código (que se compilará) con un compilador de C ++. Utilice una etiqueta específica de la versión para preguntas relacionadas con una revisión estándar específica [C ++ 11], [C ++ 14], [C ++ 17] o [C ++ 20] etc.