2011-09-08 55 views
0

我目前正在开发一个库,HAMMER,并使用CMake作为其构建系统。我正在整合也使用CMake作为其构建系统的YARP。因此,我使用标准CMake方法导入YARP,即。将CMake指向在YARP编译期间使用YARP_LIBRARIESYARP_INCLUDE_DIRS生成的YARPConfig.cmake文件。到现在为止还挺好。CMake自动链接外部库依赖关系

问题是在链接阶段(我的库)CMake会自动链接到YARP依赖的所有库。例如,YARP使用gsl,但我的库没有(最多它调用使用gsl的YARP方法),但gsl显示为我的库的ld依赖项(使用ldd)。

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

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

有谁知道为什么CMake有这个政策?更重要的是,有没有解决这个问题的方法,并不意味着将YARP导入应用程序的CMake脚本中?

谢谢!

回答