cmake 我可以得到find_package来报告它找到了什么吗?

vuktfyat  于 2023-05-29  发布在  其他
关注(0)|答案(2)|浏览(218)

当我们最初使用CMake进行配置时,我们会收到一些关于find_package()指令的消息,例如:

-- Found CUDAToolkit: /usr/local/cuda/include (found suitable version "12.0.140", minimum required is "10.1")

或:

-- Found Python: /usr/bin/python3.11 (found version "3.11.2") found components: Interpreter

但是对于其他包,我们找到_package -默认情况下不打印任何内容。
除了自己打印这样的消息之外,有没有一种方法可以告诉CMake为它找到的每个包打印一些消息?
注意:在这个related question中,提到了命令行选项-D CMAKE_FIND_DEBUG_MODE=ON;但这会打印出大量我不想要的调试信息。

pzfprimi

pzfprimi1#

tl;dr:从CMake 3.26开始-没有自定义Find脚本。

您作为示例给出的包具有自定义的Find脚本,例如:FindCUDAToolkit.cmake,作为CMake发行版的一部分,它实现了这种行为。如果您为自己的包编写这样的脚本,它可以做到这一点;但是-鸡和蛋的问题:在使用查找脚本之前,您需要您的软件包,或者至少需要有人独立下载并使用您的查找脚本。
现在,相信@fabian的评论和CMake文档没有提到这一点,我已经提交了针对CMake的issue 24936来添加此功能。

bt1cpqcv

bt1cpqcv2#

您可以使用message命令打印找到的内容,以下是一个示例:

find_package(Boost 1.78)
if (Boost_FOUND)
  message("Found Boost!" "  Version:" ${Boost_VERSION})
elseif (NOT Boost_FOUND)
  message("Not found Boost!")
endif ()

有关message命令的更多信息,请参阅CMake Docunmetation

相关问题