Нет эффекта CMAKE_MODULE_PATH
Cmake не видит OpenCVConfig.cmake. Установил list(APPEND CMAKE_MODULE_PATH "$ENV{HOME}/CLionProjects/opencv/opencv-android-shared/sdk/native/jni"). Файл присутствует
Хочу использовать OpenCV в приложении QT под андроид. Qt, OpenCV, текущий проект собираются с использованием одного и того же toolchain ../Android/Sdk/ndk/android-ndk-r21e/build/cmake/android.toolchain.cmake. Так же ANDROID_PLATFORM=28 ANDROID_ABI=arm64-v8a.
В CMakeLists.txt текущего проекта:
list(APPEND CMAKE_MODULE_PATH
"$ENV{HOME}/CLionProjects/opencv/opencv-android-shared/sdk/native/jni")
list(APPEND CMAKE_PREFIX_PATH
...
"$ENV{HOME}/CLionProjects/opencv/opencv-android-shared/sdk/native/jni")
Ошибка Cmake:
By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "OpenCV", but
CMake did not find one.
Could not find a package configuration file provided by "OpenCV" with any
of the following names:
OpenCVConfig.cmake
opencv-config.cmake
Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
"OpenCV_DIR" to a directory containing one of the above files. If "OpenCV"
provides a separate development package or SDK, be sure it has been
installed.
Подозреваю Cmake ищет определенную версию/платформу OpenCV, но настройки сборки аналогичные.
Ответы (1 шт):
Переменная CMAKE_MODULE_PATH используется только для поиска "Find" скриптов.
Для поиска "Config" скриптов используется переменная CMAKE_PREFIX_PATH или XXX_DIR.
Это различие переменных можно выявить, прочитав внимательнее сообщение об ошибке:
By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH
Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH
set "OpenCV_DIR" to a directory containing one of the above files.
В последней фразе имеются ввиду именно файлы OpenCVConfig.cmake и opencv-config.cmake.
Различие использования переменных CMAKE_PREFIX_PATH и XXX_DIR в том, что переменная XXX_DIR задаёт путь к "Config" файлу только одного пакета, а переменная CMAKE_PREFIX_PATH может указывать на директорию, куда установленно сразу несколько пакетов.
Между прочим, обе эти переменные - CMAKE_PREFIX_PATH и XXX_DIR - можно задавать в окружении (environment). Тогда их не надо передавать через параметры cmake или устанавливать внутри CMakeLists.txt (последнее вообще не рекомедуется).
(А вот задание переменной CMAKE_MODULE_PATH внутри CMakeLists.txt - единственный рекомендованный вариант).
