windows - 如何告诉 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
如果可以随心所欲地做任何事情,也许我所要求的是不可能的?
解决方案
由于 3.17 版 CMake 提供了 option --debug-find
,这会导致输出大量关于搜索过程和其他命令的调试信息:find_package
find_*
cmake --debug-find <...>
通过设置变量CMAKE_FIND_DEBUG_MODE可以实现类似的效果。
可以在命令行中设置变量:
cmake -DCMAKE_FIND_DEBUG_MODE=1 <...>
或在CMakeLists.txt
:
set(CMAKE_FIND_DEBUG_MODE 1)
推荐阅读
- java - 多部分请求无法按预期进行弹簧集成
- java - 使用 XSSFWorkbook 创建 xlsx 文件,但使用方法 createSheet("String") 时出错
- python - Python 3 使用 Bs4 抓取
- oracle - 使用 Oracle DBMS_DATAPUMP 导入单个表时主表出错
- python - 仅在相同的索引值内识别列值的变化
- xml - 将 XML 数据导入 MS Access 运行时错误
- soap - 什么是 Servicenow SOAP API getkeys 通配符?
- c++ - 使用新值和值但没有明确数量的元素的数组初始化
- laravel - 在另一个工厂调用工厂
- javascript - 从请求中分派 redux 操作的正确方法