我想了解的cmake如何找到包,使用FindXXX.cmake
文件。作爲一個例子,圖書館OpenNI具有這裏定義的文件FindOpenNI.cmake
:https://github.com/PointCloudLibrary/pcl/blob/master/cmake/Modules/FindOpenNI.cmakecmake如何找到一個包?
現在,在該文件的底部,有以下幾點:
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是否已經找到。
因此,如何cmake的真正找到OpenNI?使用這個文件?或者以其他方式?
謝謝:)
啊,好的。因此,如果'FindOpenNI.cmake'文件同時具有'find_path()'和'find_library()',並且都找到了,那麼它會將'OPENNI_FOUND'設置爲true?如果其中任何一個都找不到,那麼它會將OPENNI_FOUND設置爲false?對, – Karnivaurus
是的。 – arrowd