J'ai écrit un CMakeLists.txt
pour un projet en C++ , qui utilise des bibliothèques OpenCV . Quand j'essaie de créer le projet en utilisant cmake, j'obtiens le prochain problème de configuration:
CMake Error at CMakeLists.txt:15 (find_package):
Could not find module FindOpenCV.cmake or a configuration file for package
OpenCV.
Adjust CMAKE_MODULE_PATH to find FindOpenCV.cmake or set OpenCV_DIR to the
directory containing a CMake configuration file for OpenCV. The file will
have one of the following names:
OpenCVConfig.cmake
opencv-config.cmake
Le fait est que j'ai une variable d'environnement pour le chemin que j'utilise dans Visual Studio sans aucun problème. Si je n'inclus pas OpenCV, je peux configurer et générer sans problème, mais je dois résoudre le problème. Je ne comprends pas pourquoi cmake ne peut pas trouver le chemin OpenCV ou comment le réparer.
J'ai également utilisé les recommandations mentionnées dans ce lien: FindOpenCV.cmake
Est-ce que quelqu'un a eu ce problème aussi?
L'erreur que vous voyez est que CMake ne peut pas trouver un fichier FindOpenCV.cmake, car cmake n'en contient pas un par défaut. Par conséquent, vous devez en trouver un et le placer où cmake peut le trouver:
Vous pouvez trouver un bon début ici . Si vous vous sentez aventureux, vous pouvez également écrire le vôtre.
Ajoutez-le ensuite quelque part dans votre projet et ajustez CMAKE_MODULE_PATH afin que cmake puisse le trouver.
par exemple, si vous avez
CMakeLists.txt
cmake-modules/FindOpenCV.cmake
Alors tu devrais faire un
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake-modules)
Dans votre fichier CMakeLists.txt avant de faire un find_package (OpenCV)
Si vous êtes sous Linux, il vous suffit de renseigner la variable OpenCV_DIR avec le chemin d’opencv (contenant le fichier OpenCVConfig.cmake).
export OpenCV_DIR=<path_of_opencv>
J'ai eu exactement ce même problème. Je l'ai corrigé en ajoutant la ligne suivante à mon FindOpenCV.cmake
fichier. Placez-le n'importe où en haut avant le reste du code.
set (OpenCV_DIR /home/cmake/opencv/compiled) #change the path to match your complied directory of opencv
En gros, vous dites FindOpenCV.cmake
où trouver les fichiers ouverts en supposant que l’autre compilation puisse trouver le FindOpenCV.cmake
find/-name "OpenCVConfig.cmake"
export OpenCV_DIR =/chemin/trouvé/ci-dessus
#include #include
pas original cv.h
J'ai fait face à la même erreur. Dans mon cas, ce fichier "OpenCVConfig.cmake" se trouve dans/usr/local/share/OpenCV. Dans CMakeLists.txt, ajoutez la ligne
set(OpenCV_DIR /usr/local/share/OpenCV)
comme suggéré par le message d'erreur.
si vous êtes sur Windows, vous pouvez ajouter vous-même un chemin d'accès ouvert à OpenCV_DIR. (OpenCV_DIR est dans la région rouge)
le chemin est comme "D:/opencv244/build".
vous pouvez trouver le fichier "OpenCVConfig.cmake" sous le chemin.
Sur ma machine Fedora, lorsque j'ai tapé "make", j'ai eu une erreur disant qu'il ne pouvait pas trouver "cv.h". J'ai résolu ce problème en modifiant mon fichier "OpenCVConfig.cmake".
Avant:
SET (OpenCV_INCLUDE_DIRS "$ {OpenCV_INSTALL_PATH}/include/opencv; $ {OpenCV_INSTALL_PATH}/include")
SET (OpenCV_LIB_DIR "$ {OpenCV_INSTALL_PATH}/lib64")
Après:
SET (OpenCV_INCLUDE_DIRS "/ usr/include/opencv;/usr/include/opencv2")
SET (OpenCV_LIB_DIR "/ usr/lib64")
J'ai eu la même erreur, j'utilise Windows. J'ajoute "C:\opencv\build" (dossier opencv) au chemin d'accès au panneau de contrôle. Alors c'est bon !!
Une autre possibilité consiste à indiquer où vous pouvez trouver OpenCV_DIR
dans le fichier CMakeLists.txt. Par exemple, les scripts cmake suivants fonctionnent pour moi:
cmake_minimum_required(VERSION 2.8)
project(performance_test)
set(OpenCV_STATIC ON)
set(OpenCV_CUDA OFF)
set(OpenCV_DIR "${CMAKE_SOURCE_DIR}/../install")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIB_DIR})
file(GLOB my_source_files ./src/*)
add_executable( performance_test ${my_source_files})
target_link_libraries(performance_test ${OpenCV_LIBS})
Juste pour rappeler que vous devriez définir OpenCV_STATIC
et OpenCV_CUDA
ainsi avant de faire appel à OpenCVConfig.cmake
. Dans mon cas, la bibliothèque construite est une bibliothèque statique qui n'utilise pas CUDA.
J'utilise Windows et reçois le même message d'erreur. Je trouve un autre problème qui est pertinent. J'ai défini OpenCV_DIR dans mon chemin en fin de ligne. Cependant, lorsque j'ai tapé "chemin" dans la ligne de commande, mon OpenCV_DIR n'était pas affiché. J'ai trouvé parce que Windows a probablement une limite sur la longueur du chemin, il a coupé mon OpenCV_DIR pour qu'il ne soit qu'une partie de ce que j'ai défini. J'ai donc supprimé une autre partie du chemin, maintenant ça fonctionne.
Suivi des réponses de @ hugh-pearse et @ leszek-hanusz, avec un petit tweak. J'avais installé opencv depuis le référentiel Ubuntu 12.10 (libopencv - ) * et j'avais le même problème. Impossible de le résoudre avec export OpenCV_DIR=/usr/share/OpenCV/
(Car mon OpenCVConfig.cmake existe déjà). Le problème a été résolu lorsque j'ai également modifié certaines lignes du fichier OpenCVConfig.cmake:
# ======================================================
# Include directories to add to the user project:
# ======================================================
# Provide the include directories to the caller
#SET(OpenCV_INCLUDE_DIRS "${OpenCV_INSTALL_PATH}/include/opencv;${OpenCV_INSTALL_PATH}/include")
SET(OpenCV_INCLUDE_DIRS "/usr/include/opencv;/usr/include/opencv2")
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
# ======================================================
# Link directories to add to the user project:
# ======================================================
# Provide the libs directory anyway, it may be needed in some cases.
#SET(OpenCV_LIB_DIR "${OpenCV_INSTALL_PATH}/lib")
SET(OpenCV_LIB_DIR "/usr/lib")
LINK_DIRECTORIES(${OpenCV_LIB_DIR})
Et cela a fonctionné sur mon Ubuntu 12.10. N'oubliez pas d'ajouter le target_link_libraries(yourprojectname ${OpenCV_LIBS})
dans votre CMakeLists.txt.