我如何知道find_package()是否在cmake中成功?

时间:2010-04-26 07:13:48

标签: windows cmake

find_package(GTK)

如何输出内容以便我知道它是否找到了什么?

平台:Windows XP

1 个答案:

答案 0 :(得分:11)

您可以使用message命令,如下所示:

FIND_PACKAGE(GTK)
IF (${GTK_FOUND})
   MESSAGE(STATUS "Found GTK.")
ELSE (${GTK_FOUND})
   MESSAGE(STATUS "Could not locate GTK.")
ENDIF (${GTK_FOUND})

或者,如果你想在没有找到GTK的情况下中止它:

FIND_PACKAGE(GTK)
IF (${GTK_FOUND})
   MESSAGE(STATUS "Found GTK.")
ELSE (${GTK_FOUND})
   MESSAGE(FATAL_ERROR "Could not locate GTK.")
ENDIF (${GTK_FOUND})

请注意,如果您执行后者,那么您可以简单地将“REQUIRED”标志与FIND_PACKAGE一起使用,因为指定“REQUIRED”标志可确保如果找不到它将失败并显示错误:

FIND_PACKAGE(GTK REQUIRED)

如果找不到GTK,上面的命令将导致CMake中止并打印错误消息。您可能还对FIND_PACKAGECMake Manual的文档感兴趣。此外,应该注意FIND_PACKAGE(XYZ)实际上调用CMake模块FindXYZ,因此每个具有相应FIND_PACKAGE的包都有自己的CMake模块实现查找操作...因为CMake还有点新,其中一些查找模块是没有正确实现...根据你的下面的评论,似乎FindGTK没有正确实现(因为如果它不存在,使用REQUIRED标志应该导致它中止致命错误,但不似乎在你的情况下这样做。)