Не работает функция 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 шт):

Автор решения: arrowd

find_path не ходит по всему диску компьютера, а только по тем директориям, которые описаны в документации к этой команде. Дополнительные директории для поиска добавлены вот прям в вызове - это LEMON_ROOT, который, видимо, и надо указывать и LEMON_INCLUDE_DIR_HINTS. Волшебным образом find_path не обязан находить любой файл, который вы у него попросите.

→ Ссылка