Не работает функция find_path в cmake
При попытке сбора проекта https://github.com/openMVG/openMVG под андроид возникает следующая проблема:
Вводимая команда:
cmake -DCMAKE_TOOLCHAIN_FILE=/home/2North/Android/Sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-21 -DCMAKE_VERBOSE_MAKEFILE=ON ..
Результат:
You are attempting to build without Lemon. Please use cmake variable
-DLEMON_INCLUDE_DIR_HINTS:STRING="PATH" or LEMON_INCLUDE_DIR_HINTS env.
variable to a valid Lemon path. Or install last Lemon version.
Call Stack (most recent call first):
CMakeLists.txt:405 (find_package)
Проверив файл FindLemon.cmake в нем обнаружился следующий блок кода:
FIND_PATH(LEMON_DIR list_graph.h
HINTS "${LEMON_ROOT}" "$ENV{LEMON_ROOT}" "${LEMON_INCLUDE_DIR_HINTS}"
PATHS "$ENV{PROGRAMFILES}/lemon" "$ENV{PROGRAMW6432}/lemon"
PATH_SUFFIXES lemon
DOC "Root directory of LEMON includes")
после нехитрых манипуляций обнаружилось, что команда FIND_PATH вообще ни в какую не хочет находить путь(ED: Даже если ввести точный путь напрямую в параметры функции) , и ошибка исчезает лишь после явного указания пути в переменную LEMON_DIR:
set(LEMON_DIR /path/to/graph.h)
Мне бы хотелось узнать, в чем может заключаться ошибка, почему не работает FIND_PATH, ибо таких файлов с поиском компонентов достаточно много и хотелось бы ее починить.
Если это имеет отношение к делу, OS: Arch Linux
Ответы (1 шт):
find_path
не ходит по всему диску компьютера, а только по тем директориям, которые описаны в документации к этой команде. Дополнительные директории для поиска добавлены вот прям в вызове - это LEMON_ROOT
, который, видимо, и надо указывать и LEMON_INCLUDE_DIR_HINTS
. Волшебным образом find_path
не обязан находить любой файл, который вы у него попросите.