我想了解的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