在我们的项目中,我们使用了很多提升。因此,find_package(Boost ...)
通常使用不同的组件(针对不同的模块/库)进行调用。这会导致很多"Imported targets not available"
警告(比如真的很多)
我希望避免所有这些日志混乱而不强制所有用户在升级boost时升级CMake。我可以假设更新的升级版本没问题。但没有什么可以禁用此警告或只显示一次。
所以我的想法是封装find_package(Boost ...)
并简单地返回一个状态。最简单的方法似乎是创建自定义FindBoost.cmake
并将其放入CMAKE_MODULE_PATH
。但是,如何调用原始的boost查找模块呢?如果我再次拨打find_package(Boost ...)
,它可能会再次调用相同的模块。
另外:收集传递的参数可能会非常麻烦。是否有自动执行此操作的方法(如常规函数的ARGN
)?
注意:使用自定义宏find_boost
执行此操作的明显解决方案不应被视为涉及更改所有呼叫者。
答案 0 :(得分:1)
您可以创建FindBoost.cmake
脚本,该脚本与某些版本的CMake中的脚本相同,但相应的
message(WARNING ...)
删除行。
将此脚本添加到项目中,并调整 CMAKE_MODULE_PATH 变量以查找它。
提升警告“导入的目标不可用”无法使用find_package
的 QUIET 选项停用:运送CMake,脚本FindBoost.cmake
不能发出这些警告时,请选中此选项。