CMake - 静态库问题

时间:2010-02-05 13:45:19

标签: visual-studio-2005 cmake static-libraries

我正在使用Visual Studio 2005生成器在winxp上使用CMake-2.8。

我想说我从一些cxx文件创建了一个dll(A.dll)和一个静态库static.lib

所以我调用Link_Directories来指定静态库所在的目录。 现在A.dll建好了。

现在我想从一些cxx源代码构建B.dll,A.lib(A.dll的导入库)

现在,当我说(B A)的Target_Link_Libraries时,项目文件是使用static.lib创建的,也是依赖项。 现在B有两个依赖项A和static.lib。但是我没有将static.lib的目录添加到B的Link_Directories中,我的构建失败了。

我认为B不需要了解static.lib

任何想法如何避免这种情况?

提前致谢, 苏里亚

1 个答案:

答案 0 :(得分:1)

来自CMake docs

  

默认情况下,库依赖项是可传递的。当此目标链接到另一个目标时,链接到此目标的库也将出现在另一个目标的链接行上。请参阅LINK_INTERFACE_LIBRARIES目标属性以覆盖目标的传递链接依赖关系集。

因此,这应该可以解决您的问题:

TARGET_LINK_LIBRARIES(B LINK_INTERFACE_LIBRARIES A)