/ / Jak cmake znajduje paczkę? - c ++, linux, ubuntu, cmake, makefile

W jaki sposób cmake znajduje pakiet? - c ++, linux, ubuntu, cmake, makefile

Próbuję zrozumieć, w jaki sposób cmake znajduje pakiety, używając FindXXX.cmake plik. Na przykład biblioteka OpenNI ma plik FindOpenNI.cmake zdefiniowane tutaj: https://github.com/PointCloudLibrary/pcl/blob/master/cmake/Modules/FindOpenNI.cmake

Teraz na dole tego pliku znajduje się:

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)

Nie rozumiem, gdzie jest zmienna OPENNI_FOUND jest zdefiniowany, ponieważ jest to pierwszy punkt w wymienionym pliku.

Myślałem, że sam ten plik służy do wyszukiwania OpenNI, przeszukując katalogi zgodnie z zawartością pliku. Wydaje się jednak, że OPENNI_FOUND musiał zostać wcześniej zadeklarowany. Dlatego jest dla mnie mylące: FindOpenNI.cmake jest używany do znalezienia OpenNI, ale podczas tego procesu nadano mu zmienną OPENNI_FOUND, który sam informuje cmake, czy znaleziono OpenNI.

Jak więc cmake faktycznie znajduje OpenNI? Używasz tego pliku? Lub w inny sposób?

Dzięki :)

Odpowiedzi:

0 dla odpowiedzi № 1

Tak, CMake używa wspomnianego pliku do znalezienia OpenNI. The OPENNI_FOUND zmienna jest ustawiana przez find_package_handle_standard_args() funkcjonować. To tam cała magia jest zrobiona, patrz dokumentacja do tego.