我试图了解cmake如何使用FindXXX.cmake
文件找到包。例如,OpenNI库在此处定义了文件FindOpenNI.cmake
:https://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?使用这个文件?或者其他一些方式?
谢谢:)
答案 0 :(得分:0)
是的,CMake使用您提到的文件来查找OpenNI。 OPENNI_FOUND
变量由find_package_handle_standard_args()
函数设置。这是完成所有魔法的地方,请参阅documentation for it。