/ / Wie findet cmake ein Paket? - c ++, Linux, Ubuntu, CMake, Makefile

Wie findet Cmake ein Paket? - C ++, Linux, Ubuntu, Cmake, Makefile

Ich versuche zu verstehen, wie cmake Pakete mit Hilfe von FindXXX.cmake Datei. Als Beispiel hat die Bibliothek OpenNI die Datei FindOpenNI.cmake hier definiert: https://github.com/PointCloudLibrary/pcl/blob/master/cmake/Modules/FindOpenNI.cmake

Jetzt unten in dieser Datei befindet sich Folgendes:

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)

Was ich nicht verstehe ist, wo die Variable ist OPENNI_FOUND ist definiert, da dies der erste Punkt in der Datei ist, der erwähnt wird.

Ich hätte gedacht, dass diese Datei selbst zum Auffinden von OpenNI verwendet wird, indem die Verzeichnisse nach dem Inhalt der Datei durchsucht werden. Dies scheint jedoch zu sein OPENNI_FOUND muss vorher deklariert worden sein. Deshalb ist es für mich verwirrend: FindOpenNI.cmake wird verwendet, um OpenNI zu finden, aber während dieses Prozesses wurde die Variable angegeben OPENNI_FOUND, die selbst sagt, ob OpenNI gefunden wurde.

Wie findet cmake OpenNI? Verwenden Sie diese Datei? Oder anders?

Vielen Dank :)

Antworten:

0 für die Antwort № 1

Ja, CMake verwendet die von Ihnen erwähnte Datei, um OpenNI zu finden. Das OPENNI_FOUND Variable wird durch gesetzt find_package_handle_standard_args() Funktion. Hier wird alles Magie getan, siehe Dokumentation dafür.