cmake如何找到包裹?

时间:2015-08-21 14:15:27

标签: c++ linux ubuntu cmake makefile

我试图了解cmake如何使用FindXXX.cmake文件找到包。例如,OpenNI库在此处定义了文件FindOpenNI.cmakehttps://github.com/PointCloudLibrary/pcl/blob/master/cmake/Modules/FindOpenNI.cmake

现在,在该文件的底部,有以下内容:

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?使用这个文件?或者其他一些方式?

谢谢:)

1 个答案:

答案 0 :(得分:0)

是的,CMake使用您提到的文件来查找OpenNI。 OPENNI_FOUND变量由find_package_handle_standard_args()函数设置。这是完成所有魔法的地方,请参阅documentation for it