为 CMake 查找模块添加包装器

Add wrapper for a CMake find module

在我们的项目中,我们经常使用boost。所以 find_package(Boost ...) 经常被不同的组件调用(对于不同的 modules/libraries)。这会导致很多 "Imported targets not available" 警告(真的很多)

我想避免所有这些日志混乱,而不是在升级 boost 时强制所有用户升级 CMake。我可以假设较新的提升版本很好。但是没有什么可以禁用此警告或只显示一次。

所以我的想法是包装 find_package(Boost ...) 并简单地 return 一个状态。最简单的方法似乎是创建自定义 FindBoost.cmake 并将其放入 CMAKE_MODULE_PATH。但是我将如何调用原始的 boost find-module?如果我再次调用 find_package(Boost ...) 它可能会再次调用同一个模块。

另外:收集要传递的参数可能会非常麻烦。是否有自动执行此操作的方法(如 ARGN 用于常规函数)?

注意:不应该考虑使用自定义宏 find_boost 的明显解决方案,因为它涉及更改所有调用方。

您可以创建FindBoost.cmake脚本,该脚本与某些版本的CMake中的脚本相同,但对应

message(WARNING ...)

行已删除。

将此脚本添加到您的项目中,并调整 CMAKE_MODULE_PATH 变量以找到它。


Boost 警告 "Imported targets not available" 不能 使用 QUIET 选项禁用 find_package:随 CMake 一起提供,脚本FindBoost.cmake 在发出这些警告时不检查此选项。