我有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包的唯一选项?
非常感谢。
答案 0 :(得分:1)
事实上,两个提到的项目都会从*Config.cmake
文件中找到依赖项。而现在这是唯一的选择 - CMake无法帮助你“自动”做到这一点。
所以,不管怎样,你的配置模块都应该这样做。
简单的方法是添加find_dependency()
次调用(因为您确切知道其他包,您的项目所基于的内容)。
有点困难的是“自动”(编写自己的帮助函数) - 例如通过检查目标的属性,“搜索”所有库来自哪里并最终生成find_dependency()
调用反正。