如何告诉 CMake 输出包搜索路径?

wat*_*pet 4 windows cmake

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

find_package(LibElf REQUIRED)
Run Code Online (Sandbox Code Playgroud)

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

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

我应该注意到它libdwarf包含一个cmake/FindLibElf.cmake模块。如果FindLibElf.cmake可以自由地做任何想做的事,也许我要求的东西是不可能的?

Tsy*_*rev 11

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

cmake --debug-find <...>
Run Code Online (Sandbox Code Playgroud)

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

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

cmake -DCMAKE_FIND_DEBUG_MODE=1 <...>
Run Code Online (Sandbox Code Playgroud)

或在CMakeLists.txt

set(CMAKE_FIND_DEBUG_MODE 1)
Run Code Online (Sandbox Code Playgroud)