2015-08-21 31 views
1

我想了解的cmake如何找到包,使用FindXXX.cmake文件。作爲一個例子,圖書館OpenNI具有這裏定義的文件FindOpenNI.cmakehttps://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?使用這個文件?或者以其他方式?

謝謝:)

回答

0

是,CMake的使用文件你提到找OpenNI。 OPENNI_FOUND變量由find_package_handle_standard_args()函數設置。這是完成所有魔術的地方,請參閱documentation for it

+0

啊,好的。因此,如果'FindOpenNI.cmake'文件同時具有'find_path()'和'find_library()',並且都找到了,那麼它會將'OPENNI_FOUND'設置爲true?如果其中任何一個都找不到,那麼它會將OPENNI_FOUND設置爲false?對, – Karnivaurus

+0

是的。 – arrowd