首页 > 解决方案 > 如何告诉 CMake 输出包搜索路径?

问题描述

我正在 Windows 上编译libdwarf。在其根目录CMakeLists.txt中,它尝试通过以下方式找到LibElf

find_package(LibElf REQUIRED)

LibElf 不使用 CMAKE,我也没有将它配置为以任何方式注册自己,所以当然find_package失败了。我希望 CMake 打印出它在运行时搜索 LibElf 的所有路径。我如何告诉 CMake 输出这个?我已经尝试过--trace,但这只是向我展示了通过我的CMakeLists.txt文件的执行流程——而不是 CMake 本身目前正在寻找包的位置。

我知道find_package 的文档描述了 CMake 搜索的位置,但我可以使用各种变量、环境变量和注册表设置来修改该行为。鉴于我对刚才提到的那些项目的所有修改,我想看看 CMake 到底在哪里。

我应该注意到libdwarf包括一个cmake/FindLibElf.cmake模块。FindLibElf.cmake如果可以随心所欲地做任何事情,也许我所要求的是不可能的?

标签: windowscmake

解决方案


由于 3.17 版 CMake 提供了 option --debug-find,这会导致输出大量关于搜索过程和其他命令的调试信息:find_packagefind_*

cmake --debug-find <...>

通过设置变量CMAKE_FIND_DEBUG_MODE可以实现类似的效果。

可以在命令行中设置变量:

cmake -DCMAKE_FIND_DEBUG_MODE=1 <...>

或在CMakeLists.txt

set(CMAKE_FIND_DEBUG_MODE 1)

推荐阅读