为 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
在发出这些警告时不检查此选项。
在我们的项目中,我们经常使用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
在发出这些警告时不检查此选项。