【问题标题】:How do I know if find_package() succeeds in cmake?我如何知道 find_package() 在 cmake 中是否成功?
【发布时间】:2010-04-26 07:13:48
【问题描述】:
find_package(GTK)

我怎样才能让它输出一些东西,以便我知道它是否找到了一些东西?

平台:windows XP

【问题讨论】:

    标签: windows cmake


    【解决方案1】:

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

    FIND_PACKAGE(GTK) 如果 (${GTK_FOUND}) 消息(状态“找到 GTK。”) 否则(${GTK_FOUND}) MESSAGE(状态“找不到 GTK。”) ENDIF (${GTK_FOUND})

    或者,如果您希望它在未找到 GTK 时中止:

    FIND_PACKAGE(GTK) 如果 (${GTK_FOUND}) 消息(状态“找到 GTK。”) 否则(${GTK_FOUND}) MESSAGE(FATAL_ERROR "找不到 GTK。") ENDIF (${GTK_FOUND})

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

    FIND_PACKAGE(需要 GTK)

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

    【讨论】:

    • 它只是输出-- Could not locate GTK 但不会中止。
    • @Runner,如果您希望它中止,请使用 MESSAGE(FATAL_ERROR "Could not locate GTK.") 而不是 MESSAGE(STATUS "Could not locate GTK.")。或者,只需使用 FIND_PACKAGE(GTK REQUIRED)。
    • 我使用了FIND_PACKAGE(GTK REQUIRED),但它并没有中止,只是输出Could not locate GTK
    • @Runner,表示 FindGTK 坏了;它应该中止。
    • 在windows平台哪里可以找到FindGTK
    猜你喜欢
    • 1970-01-01
    • 2011-08-10
    • 2010-11-02
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 2018-11-26
    相关资源
    最近更新 更多