Компиляция образцов opencv: неизвестная команда cmake ocv_check_dependencies
Я пытаюсь создать образцы OpenCV, которые поставляются с исходным пакетом, и я получаю следующее:
CMake Error at CMakeLists.txt:10 (ocv_check_dependencies):
Unknown CMake command "ocv_check_dependencies".
Я установил OpenCV, используя
cmake .
make
sudo make install
и я получил учебный фрагмент работы (таким образом, я полагаю, что он правильно установлен как библиотека). Однако компиляция образцов не работает.
Думаю, мне нужно каким-то образом настроить CMake на "ocv_check_dependencies", но как? Я потерян!
Ответы
Ответ 1
Я понял.
Чтобы создать образцы, нужно изменить конфигурацию по умолчанию для cmake, предоставив ее с помощью -D
. Что я сделал неправильно, так это то, что я попытался выполнить cmake из каталога samples
.
Правильный способ создания образцов вызывает cmake так (из корневого каталога распакованного архива):
cmake -DBUILD_SAMPLES .
который включит образцы. Можно продолжать использовать make, make install, чем. Образцы можно найти в bin
после сборки.
См. также FAQ
Ответ 2
Фактически для OpenCV 2.4.4 beta корневой файл CMakeList.txt говорит:
OCV_OPTION (BUILD_EXAMPLES "Построить все примеры"
-DBUILD_EXAMPLES=ON
работал отлично для меня.
Ответ 3
Как скомпилировать код образца OpenCV?
# For OpenCV 3
cd /path/to/opencv/samples/cpp/
#Compile
g++ -ggdb `pkg-config --cflags --libs opencv` facedetect.cpp -o facedetect
#run
./facedetect
Работает для меня.
googled из этой ссылки
Ответ 4
Инструкции по сборке mydragonisland почти сработали для меня; с незначительным переупорядочением и включая акценты:
g++ facedetect.cpp -o facedetect `pkg-config --libs opencv`
Ответ 5
Макрос "ocv_check_dependencies" определяется в: your_path_to/opencv/cmake/OpenCVModule.cmake
# ensures that all passed modules are available
# sets OCV_DEPENDENCIES_FOUND variable to TRUE/FALSE
macro(ocv_check_dependencies)
set(OCV_DEPENDENCIES_FOUND TRUE)
foreach(d ${ARGN})
if(d MATCHES "^opencv_[^ ]+$" AND NOT HAVE_${d})
set(OCV_DEPENDENCIES_FOUND FALSE)
break()
endif()
endforeach()
endmacro()
Верхний уровень CMakeLists.txt содержит команды "include" для файлов из opencv/cmake/. Вот почему макрос доступен при компиляции, вызывая cmake из корня источников opencv.
Ответ 6
Причина
контекст сообщения об ошибке:
CMake Error at CMakeLists.txt:10 (ocv_check_dependencies):
Unknown CMake command "ocv_check_dependencies".
Это сообщение об ошибке происходит, потому что cmake не может найти определение ocv_check_dependencies
Вот почему консоль сказала Неизвестная команда CMake
Решение
Если cmake не может найти, где ocv_check_dependencies
определено
Так же, как @Nick Hockings Said:
ocv_check_dependencies
- это макрос, определенный в Your/OpenCV/path/OpenCVModule.cmake
macro(ocv_check_dependencies)
set(OCV_DEPENDENCIES_FOUND TRUE)
foreach(d ${ARGN})
if(d MATCHES "^opencv_[^ ]+$" AND NOT HAVE_${d})
set(OCV_DEPENDENCIES_FOUND FALSE)
break()
endif()
endforeach()
endmacro()
Самый быстрый способ - скопировать этот фрагмент выше в ваш CMakeList.txt
файл прямо там, где ocv_check_dependencies
есть
Следовательно, cmake может наконец понять, что это такое
Это должно сделать трюк, я надеюсь, что никто больше не будет беспокоиться об этом вопросе в будущем
Ответ 7
У меня были подобные ошибки. Мой подход следующий:
1) cd xxx/samples 2) mkdir build 3) cd build 4) cmake.. 5) make
Теперь это работает. Мы не могли создать отдельный проект под исходными файлами.
Ответ 8
Следующие шаги работают для меня.
Экспортировать путь привязки.
cd opencv-3.3.0/samples
cross_cmake && &
cross_make
cd opencv-3.3.0/samples/cpp/