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 № 1Ja, 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.