/ / Як CMake знаходить пакет? - c + +, linux, ubuntu, cmake, makefile

Як CMake знаходить пакет? - c + +, linux, ubuntu, cmake, makefile

Я намагаюся зрозуміти, як cmake знаходить пакети, використовуючи FindXXX.cmake файл Як приклад, в бібліотеці OpenNI є файл FindOpenNI.cmake визначено тут: https://github.com/PointCloudLibrary/pcl/blob/master/cmake/Modules/FindOpenNI.cmake

Тепер у нижній частині цього файлу є наступне:

if(OPENNI_FOUND)
# Add the include directories
set(OPENNI_INCLUDE_DIRS ${OPENNI_INCLUDE_DIR})
message(STATUS "OpenNI found (include: ${OPENNI_INCLUDE_DIRS}, lib: ${OPENNI_LIBRARY})")
endif(OPENNI_FOUND)

Те, що я не розумію, це місце змінної OPENNI_FOUND визначається, оскільки це перша точка файла, про яку вона згадується.

Я б подумав, що саме цей файл використовується для пошуку OpenNI шляхом пошуку в каталогах, як це продиктовано вмістом файлу. Однак, здається, що OPENNI_FOUND повинен бути оголошений раніше. Тому це мені плутає: FindOpenNI.cmake використовується для пошуку OpenNI, але під час цього процесу йому дано змінну OPENNI_FOUND, який сам розповідає cmake, чи знайдено OpenNI.

Отже, як насправді знайти OpenNI? Використовуючи цей файл? Або інший спосіб?

Дякую :)

Відповіді:

0 для відповіді № 1

Так, CMake використовує файл, який ви згадали, щоб знайти OpenNI. The OPENNI_FOUND змінна встановлена find_package_handle_standard_args() функція Тут відбувається вся магія, див документація для цього.