首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake自动链接外部库依赖项

问CMake自动链接外部库依赖项
EN

Stack Overflow用户
提问于 2011-09-09 02:05:24
回答 1查看 3K关注 0票数 0

我目前正在开发一个名为HAMMER的库,并使用CMake作为其构建系统。我正在集成YARP,它也使用CMake作为其构建系统。因此,我使用标准的CMake方法导入YARP。将CMake指向在YARP编译期间生成的YARPConfig.cmake文件,并使用YARP_LIBRARIES和YARP_INCLUDE_DIRS。到现在为止还好。

问题是,在(我的库的)链接阶段,CMake将自动链接到YARP所依赖的所有库。例如,YARP使用gsl,但我的库不使用(它最多调用使用gsl的YARP方法),而gsl似乎被列为我的库的ld依赖项之一(使用ldd)。

当使用缺省库路径中的库时,这不是一个大问题,但是如果您需要链接到不在库路径上的库(并且该库不是您的项目的一部分),那么链接将失败(因为找不到所需的库)。

这正是当尝试构建一个使用HAMMER (也使用CMake)的应用程序时发生的事情,因为YARP没有安装在默认位置,我的应用程序试图链接到它(根据刚才描述的行为),但失败了,因为它找不到YARP库。

有人知道为什么CMake有这个政策吗?更重要的是,有没有一种方法可以避免将YARP导入到应用程序的CMake脚本中?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-22 19:22:08

请参阅CMake常见问题解答Why are libraries linked to my shared library included when something links to it?。如果您想要防止这种行为,我认为您必须更改YARP的LINK_INTERFACE_LIBRARIES属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7352526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档