自定义共享库的Config.cmake文件

时间:2017-08-13 11:12:47

标签: cmake

我有this项目,我已经完成了Qt和共享库的实验。这基本上是来自Qt教程的几个Qt Widgets以及我认为正确的CMakeLists配置,因此从MylibConfig.cmake自动生成MylibConfig.cmake.in以共享库。问题是我不希望最终用户将我的库的依赖项添加到它自己的CMakeLists.txt。在我的情况下,这个库依赖于Qt4,但我希望最终用户不必执行find_package(Qt 4 REQUIRED)。想象一下,我想为那些不需要或想知道我的库是什么的人提供一个封闭的功能。有没有办法自动生成MylibConfig.cmake自动查找所有必需的包,或者是在MylibConfig.cmake.in中手动添加fin包的唯一选项?

非常感谢。

1 个答案:

答案 0 :(得分:1)

事实上,两个提到的项目都会从*Config.cmake文件中找到依赖项。而现在这是唯一的选择 - CMake无法帮助你“自动”做到这一点。

所以,不管怎样,你的配置模块都应该这样做。 简单的方法是添加find_dependency()次调用(因为您确切知道其他包,您的项目所基于的内容)。 有点困难的是“自动”(编写自己的帮助函数) - 例如通过检查目标的属性,“搜索”所有库来自哪里并最终生成find_dependency()调用反正。