为CMake查找模块添加包装器

时间:2018-04-19 16:52:40

标签: boost cmake wrapper

在我们的项目中,我们使用了很多提升。因此,find_package(Boost ...)通常使用不同的组件(针对不同的模块/库)进行调用。这会导致很多"Imported targets not available"警告(比如真的很多)

我希望避免所有这些日志混乱而不强制所有用户在升级boost时升级CMake。我可以假设更新的升级版本没问题。但没有什么可以禁用此警告或只显示一次。

所以我的想法是封装find_package(Boost ...)并简单地返回一个状态。最简单的方法似乎是创建自定义FindBoost.cmake并将其放入CMAKE_MODULE_PATH。但是,如何调用原始的boost查找模块呢?如果我再次拨打find_package(Boost ...),它可能会再次调用相同的模块。

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

注意:使用自定义宏find_boost执行此操作的明显解决方案不应被视为涉及更改所有呼叫者。

1 个答案:

答案 0 :(得分:1)

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

message(WARNING ...)
删除

行。

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

提升警告“导入的目标不可用”无法使用find_package QUIET 选项停用:运送CMake,脚本FindBoost.cmake不能发出这些警告时,请选中此选项。