2015-08-21 32 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